Leere Felder zählen

NeMeSiS1987

Erfahrenes Mitglied
Hi,

ich programmiere zur Zeit mit VBA in Access.
Da muss ich aus einer Zeile einer Tabelle, alle leeren Felder zählen und die Zahl in ein anderes Feld einer anderen Tabelle schreiben lassen.
Wie kann man das realisieren? Hab schon ein bisschen mit SQL Befehlen rumexperimentiert, aber bin auf kein Ergebnis gekommen...
Kann mir da jemand weiterhelfen?
Danke!
 
Moin

Wie sieht denn deine Tabelle ungefähr aus? Und wo sind die Felder leer in unterschiedlichen Spalten oder immer in der selben?

Grüsse bb
 
Die Tabellen sieht so aus:

Panel | 1 2 3 4 ... .......48
----------------------------------------
P001 | x x [leere Felder] .x
P002 | [leere Felder] x ... x
....

Nun will ich zu jedem Panel die Anzahl der belegten Ports haben.

Also die Anzahl der leeren Felder ist unterschiedlich.
 
Zuletzt bearbeitet:
Hab eine Funktion gefunden, mit der ich auf die Spaltentitel zugreifen kann. Kann ich mit einer ähnlichen vielleicht auch auf die einzelnen Zeilen zufreifen?

Public Function FeldNamen(TabNam As String)

Dim db As Database
Dim tdf As TableDef
Dim fld As Field
Dim erg As String
Dim x As Integer

x = 0

Set db = CurrentDb()
Set tdf = db.TableDefs(TabNam)

For Each fld In tdf.Fields
If Not IsNull(fld.Name) Then x = x + 1
erg = erg & x & " "
Next fld

MsgBox erg, 64

db.Close

End Function

Danke für die Mühe
 
schau dir mal das recordset Objekt an das hat einzelne Spalten (Fields) und du kannst über MoveNext auf einzelne Elemente zugreifen

Grüsse bb
 
Visual Basic:
Dim x as recordset

set x = currentdb.Openrecordset("Select * From Tabelle")

while not x.eof
  for i = 0 to x.fields.count-1
  if isnull(x.Fields(i).name then
       erg = erg +1 
  end if 
  next i 
  debug.print "in Zeile " & x.absolutposition + 1  & " waren " & erg & " Null werte "
  x.movenext
wend 
x.close

Das ist ungetester Code um dir das Schema anzuzeigen sollte es aber reichen

Grüsse bb
 
Danke! Ich war auch schon auf der richtigen Spur. Es funktioniert jetzt:

Public Function Leerfelder(TabNam As String)

Dim db As Database
Dim tdf As TableDef
Dim fld As Field
Dim erg As String
Dim x As Integer
Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("SELECT * FROM " + TabNam, dbOpenDynaset)
Set db = CurrentDb()
Set tdf = db.TableDefs(TabNam)


While Not rs.EOF
x = 0

For Each fld In rs.Fields
If IsNull(fld.Value) Then x = x + 1
Next

MsgBox "In Zeile " + CStr(rs.AbsolutePosition + 1) + "sind " + CStr(x) + " Leerfelder.", 64
rs.MoveNext
Wend

rs.Close
db.Close

End Function

Danke nochmal für deine Hilfe!
 
Kein Problem!

Bitte benutz bitte bei Code das nächste mal die [CODE] oder die [code=vb] Tags
Grüsse bb
 
Zuletzt bearbeitet von einem Moderator:
Zurück