Prüfen ob item in werte liste
netghost
- vb-script
0 Ralf Walther0 netghost
Hi,
ich habe zwei recordsets und will nun schauen ob der feldname aus rs1 in rs2 vorkommt. Weiß jemand ob es dafür einen Befehl gibt in der art von:
For each flditem in rs1.fields
if flditem.name in rs2.fields then
'ok
end if
next
mit zwei for each schleifen kriege ich das hin, finde es aber nicht gut.
Gruß
Netghost
Hallo Netghost,
eine solche von Dir gewünschte Funktion gibt es nicht.
Du könntest höchstens ein Konstrukt bauen, in dem Du für
jedes Feld von rs1 versuchst den Wert des entsprechenden
Feldes in rs2 zu ermitteln und mögliche Fehler entsprechend abfängst
z.B.
Dim test as Variant
For Each flditem in rs1.Fields
On Error resume next
test=rs2(flditem.name)
if errors.count>0 then
'Fehlerbehandlung
End If
Next
Gruß Ralf
Hi Ralf,
Danke zunächst mal. Über errorhandling habe ich auch nachgedacht, aber es ist so daß wenn das feld nicht in rs2 ist ich eigentlich nichts tun will und zum nächsten feld weitergehe.
Habe es mit zwei schleifen gemacht, fand es nur nicht so gut.
for each flditem1 in rs1.fields
for each flditem2 in rs2.fields
if flditem1.name = flditem2.name
ctrl = "ok"
end if
next
next
Gruß
Netghost
Hi Netghost,
Danke zunächst mal. Über errorhandling habe ich auch nachgedacht, aber es ist so daß wenn das feld nicht in rs2 ist ich eigentlich nichts tun will und zum nächsten feld weitergehe.
das passiert bei der von Ralf vorgeschlagenen Lösung auch. Durch das on error resume next wird einfach zur nächsten Zeile weiter gegangen, wo du halt nachschaust, ob es einen Fehler gab.
for each flditem1 in rs1.fields
for each flditem2 in rs2.fields
if flditem1.name = flditem2.name
ctrl = "ok"
end if
next
next
Funktioniert prinzipell, ist aber arge Verschwendung von Performance, weil du die innere Schleife für jeden Wert der äußeren nochmal komplett durchläufst.
Gruß,
Martin
Hi Martin,
Funktioniert prinzipell, ist aber arge Verschwendung von Performance, weil du die innere Schleife für jeden Wert der äußeren nochmal komplett durchläufst.
Ja diese Lösung ist nicht sehr freundlich zur performance. Ok es werden vielleicht max 500 Datensätze a 50 Feldern eingelesen, das ganze läuft auch noch lokal ab, also nicht übers internet. Trotzdem dauert es merklich lange bis die prüfung abgeschlossen ist, deswegen falls jemand eine bessere Lösung weiss, ich bin offen
Gruß
Netghost
Hi Netghost,
Trotzdem dauert es merklich lange bis die prüfung abgeschlossen ist, deswegen falls jemand eine bessere Lösung weiss, ich bin offen
na die von Ralf. Auch wenn es ein paar Zeichen mehr zu tippen sind.
Gruß,
Martin