Forum: PC-Programmierung Access / VBA Datensatz nach num Wert suchen


von Thomas S. (Gast)


Lesenswert?

Hallo Forengemeinde,
ich habe eine Tabelle / Abfrage worin auch numerische Werte stehen.
Nun muss ich per VBA in dieser Tabelle/Feld einen numerischen Wert 
suchen.
Dies gelingt mir aber mit FindFirst, usw nicht, da FindFirst nach String 
sucht, und nicht numerisch.
Es soll einfach in einer Tabelle, in dem Feld Versuch [Integer] eine 
bestimmte Zahl gesucht werden.

Womit kann ich dies lösen?

Bin auf Reha, und habe keine Bücher hier, und ist auch leider die Hilfe 
von VBA beschädigt, so dass ich auch hier nicht suchen kann.

von Rainer Z. (netzbeschmutzer)


Lesenswert?

Du könntest das DAO-Objekt in VBA einbinden, dann versteht VBA auch 
SQL-Befehle. Damit kannst Du außerdem wesentlich präzisere 
Datenbankabfragen erstellen, außerdem funktioniert es mit diversen 
Datentypen wie string, integer, long etc.

Das ist nicht einmal sonderlich kompliziert, aber zu umfangreich, um es 
hier darzustellen. Im Internet wirst Du unter DAO-Objekt und SQL fündig, 
da findest Du auch Code-Beispiele für VBA.

von ge-nka (Gast)


Lesenswert?

Irgendwie so:
1
private sub showQueryData
2
  dim db as dao.database
3
  dim rs as dao.recordset
4
  dim sqlStr as string
5
6
  sqlStr = "SELECT * FROM TabelleMitDaten WHERE FeldMitNummer = 122"
7
8
  set db = currentDb
9
  set rs = db.openRecordset(sqlStr)
10
  ' rs hat jetzt alle Treffer mit Nummer 122
11
  rs.movefirst
12
13
  do while not rs.EOF '(EOF = End Of File)
14
    ' hier kommt der Code für jeden Treffer
15
    debug.print("the ID: " & rs!id & " Daten Name: " & rs!name)
16
    rs.movenext
17
  loop
18
19
  msgbox("End of TabelleMitDaten")
20
end sub

von Rainer Z. (netzbeschmutzer)


Lesenswert?

Und bitte prüfen, ob die Datei DAO360.dll im SYSWOW64-Ordner vorhanden 
ist.

von Thomas S. (Gast)


Lesenswert?

Es ging dann doch mit folgendem Code:
1
    If Versuch_gefunden = False Then
2
       ' Suchen, wie viele Rettungsversuche dieser Datei bereits erfasst wurden
3
       Do
4
         SektDefTb.FindFirst "Datei_ID = " & DateiID & " AND " & "Versuch = " & Int_VersuchCount
5
         If SektDefTb.NoMatch = True Then
6
            Versuch_gefunden = True
7
            Exit Do
8
         End If
9
       Loop While ZielTb.NoMatch
10
       Int_VersuchCount = Int_VersuchCount + 1
11
     End If

Int_VersuchCount ist hier mein Problemfall gewesen. Dieser ist ein 
Int-Wert, und wird dann auch so in der DB gespeichert.

Ich habe dies auch irgendwo im Netz gefunden. Aber auf die Syntax mit 
doppelten und einfachen Hochzeichen muss man erstmal draufkommen. Da 
fehlt mir zugegeben noch Hintergrundwissen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.