Hallo liebe gemeinde,
folgendes problem, ich habe eine insert into anweisung die wenn ich im feld Lieferdatum, Abruf und Bestellschein 0 ist wenn nichts drin steht , steht jedoch ein wert drin soll dieser übernommen werden.
lasse ich die benannten felder leer funktioniert das auch nur wenn ich die werte eintrage funktioniert es nicht mehr und er schreibt "Syntaxfehler 3134"
hier der code Private Sub Uebernahme()
On Error GoTo Er
Dim I As Long, itm As Variant, stSQL As String
Dim strBDat As String, strLDat As String, strcDat As String
With Me!lstArtikel
If .ItemsSelected.Count > 0 Then
For Each itm In .ItemsSelected
If IsNull(Me!txtBestellschein) Then
strBDat = "NULL"
End If
If IsNull(Me!txtLieferdatum) Then
strLDat = "NULL"
Else
strLDat = Format(Me!txtLieferdatum, "\#yyyy-mm-dd\#")
End If
If IsNull(Me!txtAbruf) Then
strcDat = "NULL"
End If
stSQL = "INSERT INTO tblBestellung (Artikelname, Menge, Bestelldatum, Lieferdatum, Abruf, Bestellscheinnummer) VALUES (" & .ItemData(itm) & ", " & Me.txtMenge & ", " & Format(Me.txtBestelldatum, "\#mm\/dd\/yyyy\#") & ", " & strLDat & ", " & strcDat & ", " & strBDat & ")"
CurrentDb.Execute stSQL, dbFailOnError
Next itm
Else: MsgBox "Keine Artikel ausgewählt."
End If
End With
Me!lstBestellung.Requery
ex:
Exit Sub
Er:
If Err.Number <> 3022 Then
MsgBox Err.Number & " " & Err.Description
End If
Resume ex
End Sub
lasse ich die NZ funktion weg funktioniert es aber ich muss dann ein wert eintragen was ich aber nicht immer kann/will
Hallo,
wo ist die NZ-Funktion?
Warum sind die If IsNull-Bedingungen innerhalb der For each itm... Schleife?
Sind strBDat und strCDat inhaltlich auch Datum-Angaben wie strLDat oder ist das Text? Bei Datum würden die ISO/USA-Formatierung des Datums fehlen ,bei Text die einschließenden Hochkommata im SQL-String fehlen:
.....& ", " & strLDat & ", '" & strcDat & "', '" & strBDat & "')"
Hallo und danke für die antwort,
strBDat ist eine Zahl und strCDat ist ein Text
bei strBDat fehlt dann auch sieherlich irgend ein zeichen das er die als zahl erkennt?
und bei strCDat schreibt er mir wenn ich es leer lasse "NULL" rein und wenn ich einen Text rein schreibe bleibt das feld leer :-/
es sollte aber bei keiner dateneingabe leer bleiben oder halt dein eingeben txt anzeigen.
Hallo,
dann so:
.
If IsNull(Me!txtAbruf)
Then
strcDat = ""
End If
.
.....& ", " & strLDat & ", '" & strcDat & "', " & strBDat & ")"
huhu,
hab nur teilweise erfolg, wenn ich
es so schreibe If IsNull(Me!txtAbruf) Then
strcDat = ""
End If
dann hab ich wenn ich das Textfeld leer lasse auch in der Tabelle nichts stehn, schreibe ich aber einen Text ins Textfeld bleibt auch das Feld in der Tabelle leer hingegen wenn ich If IsNull(Me!txtAbruf) Then
strcDat = "NULL"
End If
hab schreibt er mir wenn es leer is zumindest den Text "Null" rein...
beim txtBestellschein muss auch ein fehler sein, sobald ich eine zahl in das txtBestellschein schreibe kommt die fehlermeldung wieder.
um es etwas zu veranschaulichen hab ich mal ein bild mit angehangen
[Anhang gelöscht durch Administrator]
Hallo,
es fehlt ja noch die Hälfte:
If IsNull(Me!txtAbruf) Then
strcDat = "NULL"
Else
strcDat =Me!txtAbruf
End If
hi,
hat super funktioniert, schön blöd wenn man zu doof zum abschreiben ist ;D
jetzt was anderes, ich kann nicht direkt meine bestellscheine auflisten sonder sortiere sie mir nach datum und bestellnummer um darus dann ein Bericht zu fertigen.
wenn du dir das bild oben anschaust siehst du ganz unten ein listen feld welches die daten der tblBestellung anzeigt, gibt es die möglichkeit das dieses listenfeld nur die artikel anzeigt die ich gerade bestellt habe?
ich habe überlegt ob man nicht die tblbestellung welche ja nur die Positionen der artikel beinhaltet einer weiteren tblBestellscheine zuordnet sodas wenn ich mir diese tabelle anzeigen lasse, alle bestellscheine sehe und wenn ich diesen öffne mir die darin befindlichen artikel anzeigt
das würde heißen wenn ich auf neuen Bestellschein klicke sollte automatisch eine neue BestellscheinID angelegt werden und welche dann der zu Bestellenden artikel zugeordnet und im Listenfeld angezeigt wird.