Juli 26, 2021, 15:39:05

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


INSERT INTO -Anweisung enthält den folgenden unbekannten Feldnamen

Begonnen von katharina_eckert, Juni 28, 2021, 11:38:07

⏪ vorheriges - nächstes ⏩

katharina_eckert

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

MzKlMu

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.
Gruß
Klaus

katharina_eckert

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.

MzKlMu

Hallo,
zeige bitte mal ein Bild des Beziehungsfensters.
Gruß
Klaus


MzKlMu

Gruß
Klaus

katharina_eckert

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

MzKlMu

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
Stop
Die 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 = vbYes
Oder noch einfacher auf intAnlegen verzichten:
strMeldung = "'" & NewData & "' Neuer Maschinen Typ anlegen?"
    If MsgBox(strMeldung, vbYesNo, "Neuer Maschinen Typ?") = vbYes Then
Gruß
Klaus

Beaker s.a.

Liegt wohl daran, dass das Tabellenfeld nicht "txtMaschinen_Typ" heisst.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

MzKlMu

Hallo,
5x nachgesehen und nicht aufgefallen. Ekkehard hats gefunden.  ;D
Gruß
Klaus

Beaker s.a.

--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

katharina_eckert

ohh mann hahahahahahaahahahahaahahh Vielen Dank euch beiden :)

Ich habe es leider auch verpeilt ich habe gedacht, es heißt so haha.

Mfg

katharina_eckert

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.


Beaker s.a.

@klaus
Zitatweil 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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.