PDA

Vollständige Version anzeigen : Probleme mit VBA Code


Simon
03.07.2001, 09:51
Hallo,

ich habe ein Formular 'Suchen' mit Kombifelder "nachKostenstellenGeteilt" und "nachKostenstellen" und zum Anzeigen habe ich noch einem Bouton "Anzeigen"!

Jetzt wenn ich einen Listeneintrag anklicke und danach auch Anzeigen bekomme ich eine Fehlermeldung:

Laufzeitfehler'3464' Datentypen in Kriterienausdruck unverträglich!

Ich arbeite mit folgendem Code in Anzeigen:

Private Sub Anzeigen_Click()
If Not IsNull(Me.nachKostenstellengeteilt) Then
DoCmd.OpenReport "reqWerkstattauftragAusgeführt", acViewPreview, , "[AnlageType]=" & Me.nachKostenstellengeteilt
ElseIf Not IsNull(Me.nachKostenstellen) Then
DoCmd.OpenReport "reqWerkstattauftragAusgeführt", acViewPreview, , "[AnlageTypeNr]=" & Me.nachKostenstellen

End If
End Sub

kann mir jemand helfen!!

Gruss Simon

A.S.
03.07.2001, 10:10
Hallo Simon,

ich gehe davon aus, das Dein Tabellenfeld AnlageType bzw. AnlageTypeNr (Absichtlich zwei unterschiedliche Felder oder ein versehen?) oder zumindest eins von beiden einen numerischen Wert enthält. Der Wert Deines Steuerelementes (Kombinationsfeld) ist aber von Natur her ein Stringwert, welchen Du erst mittels Val() in einen Zahlwert umwandeln mußt.


------------------
HTH

Arno

Kurt aus Kienitz
03.07.2001, 10:11
Hallo Simon,

Kommt die Fehlermeldung beim ersten oder beim zweiten DoCmd.OpenReport ?

Sieht so aus, als ob AnlageType oder AnlageTypeNr ein String ist und Du schlicht die Hochkommatar vergessen hast.

Simon
03.07.2001, 10:18
Hallo zusammen,

mein Bericht sollte beides enthalten und die Fehlermeldung kommt beim ersten DoCmd.OpenReport!!

Was muss ich jetzt verändern in meinem Code??

Gruss Simon

A.S.
03.07.2001, 10:31
Hallo Simon,

Du solltest zunächst einmal feststellen, welche Feldtypeneigenschaft die beiden Felder AnlagenType und AnlangenTypeNr haben. Sind es Textfelder, muß das Ende der Docmd.OpenReport-Methode jeweils so aussehen:

...."[AnlageType..]= '" & Me.nachKostenstellengeteilt & "'"

sind es dagegen numerische Daten, muß das Ende so aussehen:

...."[AnlageType..]=" & Val(Me.nachKostenstellengeteilt)


------------------
HTH

Arno

Simon
04.07.2001, 14:43
Hallo, mein Problem konnte ich nicht lösen mit den Antworten!!

1. Wie bekomme ich drei Hochzeichens wie Arno in seinem Beitrag hat????

2. Ich habe jetzt mein Code abgeändert und er sieht jetzt so aus:
Private Sub Anzeigen_Click()
If Not IsNull(Me.AnlageType) Then
DoCmd.OpenReport "reqKostenstellen", acViewPreview, , "[AnlageType]=" & Me.AnlageType
End If
End Sub

aber jetzt bekomme ich eine fehlermeldung:
"Parameterwerte eingeben" und einen Laufzeitfehler '3075': Syntaxfehler (fehlender Operator) in Abfrageausdruck'([AnlageType]Land und Gebäude)'!!!

Mein Feld ist ein Textfeld!!

Gruss Simon

A.S.
04.07.2001, 14:47
Hallo Simon,

zu 1) Links der großen Return-Taste am Alphablock liegt die #-Taste. Wenn Du diese mit der Umschalttaste drückst erhälst Du das einfache Hochkommata (').

zu 2) Die Zeile muß lauten:

..."[AnlageType]= '" & Me.AnlageType & "'"


------------------
HTH

Arno

Simon
04.07.2001, 15:09
Danke Arno,

bis jetzt klapts aber ich habe jetzt noch ein Kontrollkästchen das auch funktionieren sollte!!

Es heist "alleKostenstellen"!!

mein Code für dies lautet wie folgt:
Private Sub Anzeigen_Click()
ElseIf Not IsNull(Me.alleKostenstellen) Then
DoCmd.OpenReport "reqKostenstellen", acViewPreview, , "[Kostenstelle]=" & Me.alleKostenstellen
End If

End Sub

Dies geht aber nicht!! Muss ich wass dazu schreiben??

Gruss Simon

A.S.
04.07.2001, 15:11
Hallo Simon,

lies Dir bitte nochmals Aufmerksam den gesamten Beitrag durch.

Gruß

Arno

Simon
05.07.2001, 06:04
Hallo,
das Kontrollkästchen funktioniert bei mir nicht ????

Ich habe alles versucht was bis jetzt an Antworten bekommen habe!!

Wenn ich das Kontrollkästchen und danach den Bouton Anzeigen klicke kommt : Parameterwete eingeben!!

Gruss Simon

A.S.
05.07.2001, 06:23
Guten Morgen Simon,

gut, jetzt hab ich's auch selbst noch'mal durchgesehen und bin dahintergekommen, wo Dein problem liegt ;)

Dein Kontrollkästchen soll bewirken, das alle Kostenstellen angezeigt werden. Warum gibst Du dann für den Fall das alle Kostenstellen angezeigt werden sollen eine Bedingung an?

Lasse die Bedingung weg und ruf den Report so auf, dann sollte alles klar sein.

DoCmd.OpenReport "reqKostenstellen", acViewPreview


------------------
HTH

Arno

Simon
06.07.2001, 09:16
Hallo,

nun habe ich ein weiteres Problem und zwar möchte ich jetzt noch eine gewisse Zeit auswählen können!!

Der Code, den ich bis jetzt habe lautet folgendermasen:

Private Sub Anzeigen_Click()
If Not IsNull(Me.AnlageType) Then
DoCmd.OpenReport "reqKostenstellen", acViewPreview, , "[AnlageType]= '" & Me.AnlageType & "'"
ElseIf Not IsNull(Me.nachKostenstellen) Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[Kostenstelle]= '" & Me.nachKostenstellen & "'"
ElseIf Not IsNull(Me.Element) Then
DoCmd.OpenReport "reqKostenstellen nach Element", acViewPreview, , "[Element]= '" & Me.Element & "'"
ElseIf Not IsNull(Me.alleKostenstellen) Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview
ElseIf Me.AlleAuswahl = 1 Then
If ProtokollType = 1 Then
DoCmd.OpenReport "reqKostenstellen", acViewPreview, , "[Datum] Between #" & Format(CDate(Me.Woche), "dd-mm-yy") & "# AND #" & Format(CDate(Me.UpToCriteria)) & "#"
ElseIf ProtokollType = 2 Then
DoCmd.OpenReport "reqKostenstellen", acViewPreview, , "[DMonat] =" & Month(Me.Monat) & Year(Me.Monat)
ElseIf ProtokollType = 3 Then
DoCmd.OpenReport "reqKostenstellen", acViewPreview, , "[Djahr] =" & Me.Jahr
Else
DoCmd.OpenReport "reqKostenstellen", acViewPreview, , "[AnlageType]=True"
End If
ElseIf Me.AlleAuswahl = 2 Then
If ProtokollType = 1 Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[Datum] Between #" & Format(CDate(Me.Woche), "dd-mm-yy") & "# AND #" & Format(CDate(Me.UpToCriteria)) & "#"
ElseIf ProtokollType = 2 Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[DMonat] =" & Month(Me.Monat) & Year(Me.Monat)
ElseIf ProtokollType = 3 Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[Djahr] =" & Me.Jahr
Else
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[nachKostenstellen]= True"
End If
ElseIf Me.AlleAuswahl = 3 Then
If ProtokollType = 1 Then
DoCmd.OpenReport "reqKostenstellen nach Element", acViewPreview, , "[Datum] Between #" & Format(CDate(Me.Woche), "dd-mm-yy") & "# AND #" & Format(CDate(Me.UpToCriteria)) & "#"
ElseIf ProtokollType = 2 Then
DoCmd.OpenReport "reqKostenstellen nach Element", acViewPreview, , "[DMonat] =" & Month(Me.Monat) & Year(Me.Monat)
ElseIf ProtokollType = 3 Then
DoCmd.OpenReport "reqKostenstellen nach Element", acViewPreview, , "[Djahr] =" & Me.Jahr
Else
DoCmd.OpenReport "reqKostenstellen nach Element", acViewPreview, , "[Element]= True"
End If
ElseIf Me.AlleAuswahl = 4 Then
If ProtokollType = 1 Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[Datum] Between #" & Format(CDate(Me.Woche), "dd-mm-yy") & "# AND #" & Format(CDate(Me.UpToCriteria)) & "#"
ElseIf ProtokollType = 2 Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[DMonat] =" & Month(Me.Monat) & Year(Me.Monat)
ElseIf ProtokollType = 3 Then
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[Djahr] =" & Me.Jahr
Else
DoCmd.OpenReport "reqKostenstellenGesamt", acViewPreview, , "[alleKostenstellen]= True"
End If
End If
End Sub


Jetzt bekomme ich eine Fehlermeldung bei "...Me.Alle Auswahl...":

Methode oder Datenobjekt nicht gefunden

Gruss Simon

Birgit Dannenberg
06.07.2001, 09:28
Jetzt bekomme ich eine Fehlermeldung bei "...Me.Alle Auswahl...":

Feldnamen mit Sonderzeichen (insbes. Leerstellen!) müssen in eckige Klammern gesetzt werden.

Gruss Birgit

Simon
06.07.2001, 09:48
Hallo,

die Fehlermeldung ist Weg aber ich kann nicht nach "Woche", "Monat" und "Jahr" suchen!!

Es zeigt immer alles an!?!?

Was nun :confused: :confused::confused: