Hallo Liebe Community,
Ich möchte anhand eines Nachschlagefeld neue Datensätze herstellen. Jedoch wenn ich zum Beispiel einen neuen Kunden oder Maschinentyp anlegen möchte, entsteht dauernd diese Anweisung. Woran könnte das liegen ?
Private Sub Kombinationsfeld90_NotInList(NewData As String, Response As Integer)
Dim db As DAO.Database
Dim lngID As Long
Dim strMeldung As String
Dim bolAnlegen As Boolean
strMeldung = "'" & NewData & "' Neuer Maschinen Typ anlegen?"
bolAnlegen = MsgBox(strMeldung, vbYesNo, "Neuer Maschinen Typ?") = vbYes
If bolAnlegen = True Then
Set db = CurrentDb
db.Execute "INSERT INTO Tbl_Maschinen_Typ (txtMaschinen_Typ)" _
& " VALUES ('" & NewData & "')", dbFailOnError
lngID = db.OpenRecordset("SELECT @@IDENTITY").Fields(0)
With Me.Controls("cboFeld")
.Undo
.Requery
.Value = lngID
End With
Set db = Nothing
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub
Mfg
Hallo,
der Fehler dürfte durch das Nachschlagefeld zu Stande kommen.
In Tabellen sollten keine Nachschlagefelder verwendet werden, die gehören ausschließlich in Formulare.
Ändere das Nachschlagefeld in der Tabelle in ein normales Textfeld und übergebe dann den entsprechenden Schlüsselwert.
hallo Klaus,
danke für Ihre Information. Ich habe auch kein Nachschlagefeld benutzt in der Tabelle. in der Tabelle habe ich den Typ kurzer Text benutzt.
Hallo,
zeige bitte mal ein Bild des Beziehungsfensters.
Hallo Klaus
hier bitteschön :)
Hallo,
was ist denn MaschTypID, ein Autowert ?
Hallo,
Ja indem Fall ist mein MaschTypID ein Autowert. wenn ich halte neue maschinentypen über die Tabelle erstelle dann klappt das. Sobald ich das über mein Formular versuche, entsteht die Anweisung.
Mfg
Hallo,
erstelle mal einen String mit der SQL Anweisung und lasse Dir den mit Debug.Print ausgeben.
Bitte das in den Code einfügen (nach Set CurrentDb):
Dim strSQL As String
strSQL="INSERT INTO Tbl_Maschinen_Typ (txtMaschinen_Typ)" _
& " VALUES ('" & NewData & "')"
Debug.Print strSQL
StopDie Ausgabe mit Debug.Print fügst Du dann man in eine Abfrage ein und probierst.
Zeige auch hier mal die Ausgabe.
PS:
Der Rückgabewert von VbYes ist nicht True, sondern eine Zahl nämlich 6. Boolean ist hier falsch, das funktioniert nur zufällig weil alles >-1 als True interpretiert wird.
So ist es besser:
Dim intAnlegen As Integer
strMeldung = "'" & NewData & "' Neuer Maschinen Typ anlegen?"
intAnlegen = MsgBox(strMeldung, vbYesNo, "Neuer Maschinen Typ?") = vbYes
If intAnlegen = 6 Then 'oder If intAnlegen = vbYesOder noch einfacher auf intAnlegen verzichten:
strMeldung = "'" & NewData & "' Neuer Maschinen Typ anlegen?"
If MsgBox(strMeldung, vbYesNo, "Neuer Maschinen Typ?") = vbYes Then
Liegt wohl daran, dass das Tabellenfeld nicht "txtMaschinen_Typ" heisst.
Hallo,
5x nachgesehen und nicht aufgefallen. Ekkehard hats gefunden. ;D
Manchmal sind Fehlermeldungen eben doch hilfreich ;)
ohh mann hahahahahahaahahahahaahahh Vielen Dank euch beiden :)
Ich habe es leider auch verpeilt ich habe gedacht, es heißt so haha.
Mfg
Hallo Ihr beiden,
Die Fehlermeldung erscheint nicht mehr, jedoch möchte er den Maschienentyp nicht neu anlegen. Woran könnte denn das liegen. Ich habe den Tabellennamen überprüft.
hier die tabelle maschinen_typ
@klausZitatweil alles >-1 als True interpretiert wird.
Ich habe mich bisher immer darauf verlassen, dass alles "<> 0" True
zurück gibt. Liege ich da False.
gruss ekkehard
@Ekkehard
Zitat von: undefineddass alles "<> 0" True
ja, habe ich ja auch sinngemäß geschrieben.
Aber im Zusammenhang mit der MsgBox ist das falsch. Die MsgBox gibt je nach Auswahl eine Ganzzahl (1-7) zurück. Und spätestens wenn man je nach Auswahl verschiedene Rückgabewerte auswerten muss, fällt einem True/False auf die Füße.
Hallo Klaus,
Das mit der MsgBox ist klar, darum ging es mir nicht.
Zitatja, habe ich ja auch sinngemäß geschrieben.
Na ja, ">-1" ist schon was anderes als "<> 0", denn soweit
ich mich erinnern kann ist die 0 grösser als -1.
gruss ekkehard