PDA

Vollständige Version anzeigen : mit schleife tabellenspalte auf variable überprüfen


dmsman
11.07.2001, 12:12
Hi,
ich hab jetzt folgendes Problem:
Ich will überprüfen ob der Dateiname (in Variable "filename" gespeichert) in einer Spalte schonmal vorkommt?! wenn ja dann darf kein Datensatz hinzugefügt werden, wenn nein dann eben schon ...
braucht man da so eine schleife ?? ich verwende bisher diesen code:

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("tbldokumente", dbOpenDynaset)
Dim testid As Integer


If rst("Name") = filename Then
MsgBox ("Dokument schon in der DB vorhanden!")
Else

rst.AddNew
rst("Name") = filename
rst("Größe_ in_ KB") = gerundet
rst("Version") = GetFileVersionNumber(test) 'test ist mein dateiname + pfad
rst("Author") = CurrentUser() 'nur als beispiel verwendet
rst("Typ") = "test"
rst("Erstellungsdatum") = datumvar3
rst("Verfallsdatum") = "optional"
rst("Schlüsselwörter") = "schluesselwort"
rst.Update
rst.close

Doch das funktioniert eben nicht, warscheinlich weil er nur den ersten Datensatz überprüft oder ?
danke

Morli
11.07.2001, 12:26
Hallo dmsman,

Dim rst As DAO.Recordset
Dim TabelleVorhanden As Boolean

Set rst = CurrentDb.OpenRecordset("tbldokumente", dbOpenDynaset)
Dim testid As Integer

Do Until rst.EOF
If rst("Name") = filename Then
MsgBox ("Dokument schon in der DB vorhanden!")
TabelleVorhanden = True
End If
rst.MoveNext
Loop


If TabelleVorhanden = False Then
rst.AddNew
rst("Name") = filename
rst("Größe_ in_ KB") = gerundet
rst("Version") = GetFileVersionNumber(test) 'test ist mein dateiname + pfad
rst("Author") = CurrentUser() 'nur als beispiel verwendet
rst("Typ") = "test"
rst("Erstellungsdatum") = datumvar3
rst("Verfallsdatum") = "optional"
rst("Schlüsselwörter") = "schluesselwort"
rst.Update
End If

rst.close


Gruß

Rainer ;)

dmsman
11.07.2001, 12:48
Hi Morli,

du Dein Code funktioniert wunderbar bis auf eins, wenn der ds schon vorhanden ist dann bin ich in einer Schleife mit der msgbox("DS schon vorhanden!")
so 5-8 mal muss ich auf ok drücken dann verschwindet die msgbox erst wieder !
wann geht er aus der schleife ?
danke

A.S.
11.07.2001, 12:52
Ergänze das

Do Until rst.EOF

auf

Do Until rst.EOF Or TabelleVorhanden = True

Dann beendet er die Schleife sobald der Dateiname gefunden wurde.

Gruß

Arno

dmsman
11.07.2001, 13:15
Jo Danke Arno so klappst auch ist sogar besser als einen Counter mitlaufen zu lassen!

Günni
11.07.2001, 17:10
Ich will ja nicht meckern ... aber das geht auch einfacher:

If DCount("Name", "tbldokumente", "Name = '" & filename & "'") > 0 Then
MsgBox "DS gibts schon"
Else
MsgBox "DS noch nicht angelegt"
End If

Nähere Details gibts in der Online-Hilfe unter "DCount" und "Domänenaggregatfunktionen"

Andere Möglichkeit:
Da wenn die Wahrscheinlichkeit recht groß ist, dass Du einen DS einfügen mußt, lohnt es sich, auf alle Fälle ein Recordset zu erzeugen ... aber statt das Ding dann mit einer Schleife zu durchlaufen kannst Du die FindFirst-Methode verwenden, um zu überprüfen, ob es den DS schon gibt. Wenn kein DS gefunden wird, ist die NoMatch-Eigenschaft = True.

<hr>

<font color="#808080" size="2" face="Arial"><strong>Mühldorfer Günter
Computer- und Software-Service
</strong></font>
mg@mgcss.de
<a href="http://www.mgcss.de">www.mgcss.de</a>