SQLServer Schutzwort und FindFirst

29/04/2009 - 18:50 von Herbert Knöttner | Report spam
Hallo Newsgroup,

Frontend: Access 2003 mit SQL Server als Backend

Eine Access-Anwendung, soll so umgestellt werden, dass sie beim
nàchtlichen Lauf keinen manuellen Eingriff mehr benötigt.
Der manuelle Eingriff ist die Eingabe des Schutzworts und des Users.

bisher
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset(Name:="myTable", _
Type:=dbOpenDynaset, Options:=dbSeeChanges)
rst.FindFirst (strWhereCond)

neu
Set wks = CreateWorkspace("ODBC", "myUser", "myPassword", dbUseODBC)
Set dbs = wks.OpenDatabase("myDSN", dbDriverComplete, , _
"ODBC;DATABASE=myDBS")
Set rst = dbs.OpenRecordset(Name:="myTable", _
Type:=dbOpenDynaset, Options:=dbSeeChanges)
rst.FindFirst (strWhereCond)

User und Password sind jetzt im Programm und das Recordset làsst
sich operatorlos öffnen (nicht unbedingt schön, aber irgendwo müssen
die geheimen Sachen stehen).

Problem: FindFirst geht nicht mehr. Der Befehl wird in einer
Schleife circa 20.000-mal aufgerufen.

Wie kann man das gangbar machen?
Làßt sich .Seek verwenden, das normalerweise Performancevorteile
bringt?

Vielen Dank für jede Hilfe und beste Grüße
Herbert
 

Lesen sie die antworten

#1 Hannes Brunner
29/04/2009 - 19:19 | Warnen spam
Hallo Herbert,

Herbert Knöttner schrieb:
Hallo Newsgroup,

Frontend: Access 2003 mit SQL Server als Backend

Eine Access-Anwendung, soll so umgestellt werden, dass sie beim
nàchtlichen Lauf keinen manuellen Eingriff mehr benötigt.
Der manuelle Eingriff ist die Eingabe des Schutzworts und des Users.

bisher
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset(Name:="myTable", _
Type:=dbOpenDynaset, Options:=dbSeeChanges)
rst.FindFirst (strWhereCond)

neu
Set wks = CreateWorkspace("ODBC", "myUser", "myPassword", dbUseODBC)
Set dbs = wks.OpenDatabase("myDSN", dbDriverComplete, , _
"ODBC;DATABASE=myDBS")
Set rst = dbs.OpenRecordset(Name:="myTable", _
Type:=dbOpenDynaset, Options:=dbSeeChanges)
rst.FindFirst (strWhereCond)



Hmm das ist ODBCDirect. Du weißt dass das von MS abgekündigt wurde? Ich
jedenfalls würde das in neuen Anwendungen nicht mehr verwenden.

User und Password sind jetzt im Programm und das Recordset làsst
sich operatorlos öffnen (nicht unbedingt schön, aber irgendwo müssen
die geheimen Sachen stehen).

Problem: FindFirst geht nicht mehr. Der Befehl wird in einer
Schleife circa 20.000-mal aufgerufen.



FindXXX entspricht nicht der Set-orientierten Arbeitsweise des SQL
Servers, ...

Wie kann man das gangbar machen?
Làßt sich .Seek verwenden, das normalerweise Performancevorteile
bringt?



... genausowenig wie Seek. Besser auf parametrisierte Queries umstellen.

Gruß
Hannes

Ähnliche fragen