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!
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]
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
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