Access 97 - Tabellen aktualisieren

Von: , Frage gestellt am Di, 8. Jan 2002

Hallo und Guten Abend,

ich bin neu hier und muss gleich eine Frage loswerden (Schöner Einstand :-} ). Vielleicht könnte jemand unter Euch mein Leben mit Access ein wenig angenehmer gestalten?

Folgendes Problem kann ich auf die schnelle nicht lösen:

Ich habe mehrere Tabellen mit unterschiedlicher Spaltenanzahl,

immer anderslautenden Spaltenbezeichnern und in den Zellen kommen NULL-Werte
(keine 0, sondern IsNull, also die Zelle ist leer) vor.

Wie kann ich diese NULL-Werte einer Tabelle mit einer Funktion auf den Wert 0(Zahl) aktualisieren?

Ich würde mich riesig freuen, wenn ich bei Euch Hilfe bekommen könnte!

Grüsse

Andy

4 Antworten zu dieser Frage

  1. Antwort von nach 11 Stunden 0 hilfreich
    Re: Access 97 - Tabellen aktualisieren

    Ich würde ein SQL-Statement schreiben:

    UPDATE Tabellenname SET Spaltenname=0 WHERE Spaltenname IS NULL;

    So kann aber immer nur eine Spalte aktualisiert werden.

    Vielleicht hilft es dir ja schon ein wenig.
    Gruß - Sirc

    • Antwort von nach 17 Stunden 0 hilfreich
      Re^2: Access 97 - Tabellen aktualisieren

      Hallo Sirc,

      danke für Deine Antwort - leider wollte ich aber ALLE Spalten in einem Rutsch aktualisieren.

      So weit bin ich bisher gekommen:

      Public Function NullenWEG()
      Dim DB As Database
      Dim Tbl As Recordset
      Dim C As Field
      Set DB = CurrentDb()
      Set Tbl = DB.OpenRecordset("Tabelle1", dbOpenTable)
      For Each C In Tbl.Fields
      If IsNull(C.Value) Then
      Tbl.Edit
      C.Value = "0"
      Tbl.Update
      End If
      MsgBox C & " Erledigt!"
      Next C
      Tbl.Close
      DB.Close
      End Function


      Aber irgendwie funzt das nicht.

      Erstaunlicherweise wird nur die erste Zeile!!! (1. Datensatz) der Tabelle geändert. Die Funktion geht also nicht in die zweite Zeile und macht dort weiter bis zum EOT?!?!

      Hier habe ich wohl einen falschen Denkansatz oder was vergessen.

      Grüsse
      Andy [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach 18 Stunden 1 hilfreich
        Re^3: Access 97 - Tabellen aktualisieren

        Dann ergänzt du das einfach noch etwas.
        Du musst in den Recordsets einfach weitergehen.
        Bei mir funktioniert folgendes:


        Public Function NullenWEG()
        Dim DB As Database
        Dim Tbl As Recordset
        Dim C As Field
        Set DB = CurrentDb()
        Set Tbl = DB.OpenRecordset("Tabelle1", dbOpenTable)

        Do While Not Tbl.EOF
        For Each C In Tbl.Fields
        If IsNull(C.Value) Then
        Tbl.Edit
        C.Value = "0"
        Tbl.Update
        End If
        MsgBox C & " Erledigt!"
        Next C
        Tbl.MoveNext
        Loop


        Tbl.Close
        DB.Close

        End Function


        Hoffentlich auch bei dir.
        Grüße Sirc

        • Antwort von nach einem Tag 0 hilfreich
          Re^4: Access 97 - Tabellen aktualisieren

          Dann ergänzt du das einfach noch etwas.
          Do While Not Tbl.EOF
          Tbl.MoveNext
          Loop



          Hoffentlich auch bei dir.
          Grüße Sirc
          Hallo Sirc,

          SUUUUPER - das gibt `nen Stern! DANKE

          Was so zwei Zeilen bewirken können!


          Ich habe die Funktion noch ein wenig erweitert - jetzt läuft auch noch eine Stoppuhr mit.
          Und siehe da, ca. 80.000 Zellen! werden innerhalb von einer Sekunde umgestellt!

          Mit Excel bin ich da 5 Minuten unterwegs und muss die Tabelle wieder zurück ins Access führen. Ne Menge Zeit und Geduld gespart.

          Und hier die erweiterte Funktion:

          Public Function Nuller()
          Dim DB As Database
          Dim Tbl As Recordset
          Dim C As Field
          Dim Start As Date
          Dim Ende As Date
          Dim AnzahlZeilen As Long
          Dim AnzahlSpalten As Long
          Dim AnzahlZellen As Long
          Set DB = CurrentDb()
          Set Tbl = DB.OpenRecordset("Tabelle1", dbOpenTable)
          Start = Format(Now(), "hh:mm:ss")
          Do While Not Tbl.EOF
          For Each C In Tbl.Fields
          If IsNull(C.Value) Then
          Tbl.Edit
          C.Value = "0"
          Tbl.Update
          End If
          Next C
          Tbl.MoveNext
          Loop
          AnzahlZeilen = Tbl.RecordCount
          AnzahlSpalten = Tbl.Fields.Count
          AnzahlZellen = AnzahlZeilen * AnzahlSpalten
          Ende = Format(Now(), "hh:mm:ss")
          MsgBox "Bearbeitete Anzahl Zellen: " & AnzahlZellen & vbCrLf _
          & vbCrLf & "Start:                                  " & Start & vbCrLf _
          & vbCrLf & "Ende:                                 " & Ende
          Tbl.Close
          DB.Close
          End Function


          nochmals Danke sagt

          Andy

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!