Problem Seek Methode zu FindFirst

03/02/2010 - 17:42 von Hans Peters | Report spam
Hallo NG,

ich habe mal wieder ein kleineres Problem beim anpassen einer alten
Access-Anwendung.
An einigen Stellen wird nach einem Datensatz über die Seek-Methode
gesucht. Dies soll nun umgestellt werden.
Grund ist, dass die Tabellen verknüpft sind, und Seek ja nicht mit
verknüpften Tabellen funktioniert. Da die verknüpften Tabellen aus
unterschiedlichen Quellen kommen können (u.a. ODBC, .MDB, SQL-Server) ist
ein direktes Ansprechen über OpenDataBase nicht mehr erwünscht.

Also mache ich mich ans Werk, um z.B. die Zeilen:

...
'Die Tabellen sind bereits im Frontend eingebunden!
Set db = DBEngine.Workspaces(0).OpenDatabase("MeineDB.MDB")
Set Parameter_Tab = db.OpenRecordset(ParameterTabelle, dbOpenTable)

Parameter_Tab.index = "PrimaryKey"
Parameter_Tab.Seek "=", Parameter
...

durch

...
Set Parameter_Tab = CurrentDb.OpenRecordset(ParameterTabelle)

Parameter_Tab.FindFirst ("PARAMETER = " & Parameter)
...

zu ersetzen.

Jetzt habe ich aber auch Fàlle, in denen der PrimaryKey aus mehreren
Feldern besteht. Und da haperts dann bei mir:

bei zwei beteiligten Feldern
...
Parameter_Tab.index = "PrimaryKey"
Parameter_Tab.Seek "=", Parameter1, Parameter2
...

ersetzt durch

...
Parameter_Tab.FindFirst ("PARAMETER_A = " & Parameter1 & " AND
PARAMETER_B = " & Parameter2)
...

mag das vielleicht noch gehen, aber hier hörts dann leider auf mit meinem
Verstàndnis:

...
Parameter_Tab.index = "PrimaryKey"
Parameter_Tab.Seek ">=", Parameter1, Parameter2, Parameter3,
Parameter4, Parameter5
...

Kann man das in eine FindFirst-Methode umsetzen, oder bin ich vollkommen
auf dem Holzweg, und sollte lieber einen Weg finden, und die
verschiedenen Datenbanken doch über OpenDatabase und die Seek-Methode
anzusprechen?
Der Geschwindigkeitsvorteil der Seek-Methode ist erstmal zweitranging.


Gruß

Hans
 

Lesen sie die antworten

#1 Karl Donaubauer
03/02/2010 - 21:31 | Warnen spam
Hans Peters wrote:
...
An einigen Stellen wird nach einem Datensatz über die Seek-Methode
gesucht. Dies soll nun umgestellt werden.
...
bei zwei beteiligten Feldern
...
Parameter_Tab.index = "PrimaryKey"
Parameter_Tab.Seek "=", Parameter1, Parameter2
...
ersetzt durch
...
Parameter_Tab.FindFirst ("PARAMETER_A = " & Parameter1 & " AND
PARAMETER_B = " & Parameter2)
...
mag das vielleicht noch gehen, aber hier hörts dann leider auf mit
meinem Verstàndnis:
...
Parameter_Tab.index = "PrimaryKey"
Parameter_Tab.Seek ">=", Parameter1, Parameter2, Parameter3,
Parameter4, Parameter5
...
Kann man das in eine FindFirst-Methode umsetzen, ...



Vielleicht (hoffentlich ;-) gibt's da was besseres, aber wenn ich richtig
verstehe, dann könntest du quasi den Index mit Strings nachbilden.
Am Beispiel von 2 ganzzahligen Parametern mit max. 5 Stellen:

Dim strParam As String

strParam = Format(Parameter1, "00000") & Format(Parameter2, "00000")

rs.FindFirst _
"Format(PARAMETER_A,'00000') & Format(PARAMETER_B,'00000') >=" _
& strParam

Also zuerst je nach Datentyp und -lànge auf ausreichende Textbreite
bringen und dann mit & kombinieren.

Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz für Accessler 27./28.2. + 20./21.3.2010

Ähnliche fragen