Office: (Office 2016) Insert / Update Null

Helfe beim Thema Insert / Update Null in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, gibt es eine einfache Möglichkeit, Null werte in eine Tabelle zu schreiben, anstatt eines Leerstrings? Der Code sieht einfach... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Immenburg, 23. Juni 2020.

  1. Insert / Update Null


    Hallo zusammen,

    gibt es eine einfache Möglichkeit, Null werte in eine Tabelle zu schreiben, anstatt eines Leerstrings?

    Der Code sieht einfach dargestellt so aus:

    strA = Me.text1
    strB = NZ(Me.text2,"")

    ....

    strSQL="INSERT INTO Tabelle (FeldA,FeldB) VALUES(strA,strB)
    CurrentDB.Execute strSQL


    Ich könnte natürlich 2 verschiedene SQL Statements benutzen in Abhängigkeit davon, ob strB leer ist oder nicht.
    Aber gibt es keine Möglichkeit?

    :)
     
    Immenburg, 23. Juni 2020
    #1
  2. Hallo,
    wenn das Feld leer ist, wird automatisch NULL verwendet.
    Die Zuweisung der Variablen ist überflüssig.
    Außerdem machst Du ja bewusst mit Nz aus NULL einen Leerstring.
    Die Felder (Text1, Text2) müssen verkettet werden.
    Versuche es so:
    Code:
    ungetestet
     
    NeuerMann1978, 24. Juni 2020
    #2
  3. Hallo,

    "wenn das Feld leer ist, wird automatisch NULL verwendet." das gilt aber nicht für einen Leerstring !

    Code:
    Natürlich kann man die Feldprüfung auch in eine Funktion auslagern.
     
    Frank200, 24. Juni 2020
    #3
  4. Insert / Update Null

    Hallo,
    wenn das Feld einen Leerstring enthält, ist es ja auch nicht leer.
    Außerdem kann ein Tabellenfeld keinen Leerstring enthalten, außer dieser wird extra in das Feld geschrieben, z.B. durch Zuweisung per VBA.
    Code:
    Was man aber unterlassen sollte. Besser ist es NULL zuzuweisen.
    Code:
    Entsprechende Einstellungen im Tabellenentwurf vorausgesetzt.

    Daher halte ich die Prüfung mit IIF und Zuweisung von "" hier für nicht notwendig.
     
    NeuerMann1978, 24. Juni 2020
    #4
  5. Hallo,
    danke schon mal für die Antworten.

    Ich habe leider das Beispiel zu einfach gehalten, um wirklich zum Ausdruck zu bringen, was ich brauch.

    Der Wert wird z.b. in einem Formular eingegeben. Der Insert in die Datenbank findet aber in einer anderen Funktion statt bzw. sogar in einer anderen Klasse.
    Um die Variable an die Funktion weitergeben zu können, darf sie ja nicht Null sein. Deshalb sah mein Aufbau so aus:
    Code:
    Aber das ist natürlich Unsinn, denke ich. Ich sollte einfach einen Variant Datentyp verwenden. Dann kann ich dieser auch NULL Werte zuweisen.

    So funktioniert es. Stellt sich nur die Frage, ob das die eleganteste Lösung ist.
     
    Immenburg, 25. Juni 2020
    #5
  6. Hallo,
    die Funktion testNULL halte ich für überflüssig.
    Du kannst den Wert direkt in der Abfrage übergeben, auch wenn das Feld leer (NULL) ist. Das bedarf keiner besonderen Klimmzüge.
     
    NeuerMann1978, 25. Juni 2020
    #6
  7. Ein Tabellenfeld nimmt NULL entgegen, ganz unproblematisch.

    Die Klimmzüge bei der Übergabe kannst Du vermeiden, wenn Du ein Insert per Recordset verwendest. Dort kannst Du die Inhalte der Formularfelder so übergeben, wie sie sind, ohne gesonderte Formatierung. Wenn die eingestellten Datentypen passen, kannst Du auf jegliche Prüfung verzichten.
    Ein Insert per Recordset ist praktisch genau so schnell wie eine Anfügeabfrage mit einem Datensatz, und der verzicht auf den Overhead ist nun auch nicht schädlich.
     
    ebs17, 25. Juni 2020
    #7
  8. Insert / Update Null

    Ihr verblüfft mich. Ist das wirklich so? Oder reden wir aneinander vorbei?

    Basis war für mich das Statement aus #2
    Code:
    Ich nehme an, daß Me.Text1 und Me.Text2 Textfelder in einem Formular sind.
    Wenn hier Me.Text2 leer ist, also NULL ist, dann würde in das Tabellenfeld FeldB ein Leerstring "" gescrieben. Und genau das sollte doch vermieden werden, oder?

    Daher halte ich die Funktion testNULL() für sinnvoll. Für Textfelder.
    Ich mache es jedenfalls genauso.
     
    Frank200, 25. Juni 2020
    #8
  9. In den Standardeinstellungen für ein Tabellentextfeld würde ein Nullstring eher als NULL eingetragen.

    Es wäre eher eine Herausforderung, wenn ein Tabellenfeld explizit einen Leerstring oder einen Nullstring als wiedergebbaren Inhalt aufnehmen sollte.
     
    ebs17, 25. Juni 2020
    #9
  10. gelöscht
     
    NeuerMann1978, 25. Juni 2020
    #10
  11. Hallo Eberhard,

    also doch die ganz große Verblüffung :-)
    Gilt das sowohl für Access als auch für MySQL? Kann man das einstellen?

    Ich hatte mal vor längerem den Fall, daß ich einen Leerstring in einer MySQL-DB gespeichert hatte und dann beim Laden in eine lokale Accesstabelle es krachte, weil in dem Accessfeld die AllowZeroLength-Eigenschaft auf Nein stand. Seitdem setze ich immer explizit auf NULL.
     
    Frank200, 25. Juni 2020
    #11
  12. Bei MySQL weiß ich es nicht.

    Vielleicht noch eine Spielerei mit den möglichen Operatoren:
    Code:
    Aber wie bereits geschrieben: Ich würde hier sehr schnell zu einem Recordset-Insert tendieren.
     
  13. Insert / Update Null

    Wie gesagt, in meinem Fall ist muss ich eine Variable verwenden. Das SQL Statement wird in verschiedenen Formularen verwendet.

    Es ist in meinem Fall auch so, dass es sich nicht um eine Access, sondern um eine MSSQL Tabelle handelt.

    Wenn Access bei seinen Tabellen einen Leerstring automatisch in NULL umwandelt, braucht man den Umweg natürlich nicht.
    Der MSSQL Server macht das nicht.

    Der Punkt mit dem Recordset stimmt:

    Code:
    In meinem Fall hilft mir das leider auch nicht, da das SQL Statement direkt an den SQL Sever geben muss, da ich ansonsten nicht die ID zurückbekomme.

    Und beim MSSQL Server hab ich keine andere Chance. Entweder ich gebe das Feld erst gar nicht an, oder ich übergebe NULL als VALUES.
     
    Immenburg, 25. Juni 2020
    #13
  14. da das SQL Statement direkt an den SQL Sever geben muss

    Wenn da nicht ein Widerspruch liegt.
     
  15. Jein. Die ursprüngliche Frage hatte ich ganz allgemein gestellt.


    Im speziellen Fall sieht es so aus:

    Code:
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Immenburg, 25. Juni 2020
    #15
Thema:

Insert / Update Null

Die Seite wird geladen...
  1. Insert / Update Null - Similar Threads - Insert Update Null

  2. MS ACCESS Insert into Foto in Datenbank

    in Microsoft Access Hilfe
    MS ACCESS Insert into Foto in Datenbank: Hallo. Ich benutze MS ACCESS im Office 365. Habe eine Anwendung geschrieben, in der in einem Formular ein Foto im Typ Bild dargestellt wird. Ich möchte nun dieses Foto mittels einem "Insert...
  3. Info über SQL INSERT INTO

    in Microsoft Access Hilfe
    Info über SQL INSERT INTO: Hi, ich wollte gerne wissen ob man bei einem neuen Datensatz in der Haupttabelle gleich in die Untertabelle schreiben kann. Wenn ja, wie? Wenn nein, welche referenzen von der Haupttabelle muss...
  4. funktionierenden INSERT

    in Microsoft Access Hilfe
    funktionierenden INSERT: Servus, folgende Prozedur funktioniert. Meine Frage ist, ob das vereinfacht werden kann. Der Code ist im Zuge einer Tabellenmodell-Optimierung nur einmal notwendig. Mich stört dabei, dass...
  5. db.Execute " INSERT INTO

    in Microsoft Access Hilfe
    db.Execute " INSERT INTO: Hallo Leute, sehe den Wald vor lauter Bäumen nicht.... kann mir jemand helfen den Knopf zu lösen? Ich erhalte immer die Fehlermeldung: "ein Parameter wurde erwartet, aber es wurden zu wenig...
  6. Datum per Insert Into in Tabelle einfügen mit Where

    in Microsoft Access Hilfe
    Datum per Insert Into in Tabelle einfügen mit Where: Hallo, ich stehe mal wieder vor einem Problem, an dem ich nicht weiter komme und bereits fast den ganzen Tag ohne Erfolg rummgoogle. *entsetzt Ich habe in einer Tabelle Datensätze die jeweils...
  7. INSERT INTO klappt nicht

    in Microsoft Access Hilfe
    INSERT INTO klappt nicht: Hallo und guten Morgen zusammen, ich möchte den angezeigten/eingegebenen Formularinhalt in eine Tabelle speichern, erhalte jedoch den Laufzeitfehler '3075': Synaxfehler (fehlender Operator) in...
  8. INSERT INTO-Anweisung

    in Microsoft Access Tutorials
    INSERT INTO-Anweisung: INSERT INTO-Anweisung Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden