Im Moment habe ich eine Datenbank mit einem SQL Server-Back-End und ein MS Access-Front-End. In einem Formular werden die Ladezeiten meiner Benutzer langsam angezeigt. Das Formular sieht im Wesentlichen nach, wer der Benutzer ist (basierend auf seiner Login-ID, dieser Teil funktioniert), sieht ihre Zugriffsrechte (readonly, v. Update, etc; das funktioniert auch) und zieht dann die Projekte, die ihnen erlaubt sind zu sehen, basierend auf ihren Zugriffsrechten (das ist der Teil, glaube ich, läuft langsam).Verwenden einer gespeicherten Prozedur als ein MS-Access-Formular Recordsource
Um dieses Formular schneller laden zu können, habe ich das Gefühl, dass das Verschieben des letzten Teils, des Teils, der die Projekte anzieht, zu einer SSMS Stored Procedure führt.
Ich habe die gespeicherte Prozedur geschrieben, in SSMS, und ich habe den Code auf das 'Form Load' Ereignis, das die gespeicherte Prozedur aufruft. Das Problem, mit dem ich konfrontiert bin, ist, dass die Ergebnisse der gespeicherten Prozedur zur Datenquelle des Formulars werden. Ich habe Me.RecordSource ausprobiert, aber das scheint nicht zu funktionieren. Unten ist eine Kopie des Codes, der die gespeicherte Prozedur aufruft:
Das ist anders als mit Code zum Aufruf eines SP, weil ich bereits den Code, um es aufzurufen, aber ich brauche die Ergebnisse des SP zu sein die Recordsource eines MS Access Formulars.
Jede Hilfe oder Ideen werden geschätzt! (ZB ich dachte, zu versuchen, eine temporäre Tabelle zu verwenden, da die Datenherkunft zu dienen ...)
Dim rs1 As ADODB.Recordset
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
cn.ConnectionString = "DRIVER=SQL Server;SERVER=SERVERNAME;APP=Microsoft Office XP;WSID=MYCOMPUTER;DATABASE=dbname;Trusted_Connection=Yes;"
cn.Open
Set cmd = New ADODB.Command
Set rs1 = New ADODB.Recordset
With cmd
.ActiveConnection = cn
.CommandType = adCmdStoredProc
.CommandText = "dbo.ProcProjectSelection"
Set prm = .CreateParameter("@xID", adVarChar, adParamInput, 10, Me.txtNetworkID)
.Parameters.Append prm
End With
Wenn ich gesagt: Sets Me.RecordSource = RS1 Vor dem „enden mit“ ich einen Fehler SMS-Nachricht: „Ungültige Verwendung von Eigentum“
Mögliches Duplikat von [MS Access-Aufruf gespeicherte SQL Server-Prozedur] (http: // stackoverflow.com/questions/18800727/ms-access-call-sql-server-stored-procedure) –
Das ist anders als mit Code zum Aufruf eines SP, weil ich bereits den Code, um es aufzurufen, aber ich brauche die Ergebnisse der SP ist die Recordsource eines MS Access-Formulars. – revelations
Möglicherweise ist der Parameter nicht gültig. Sie können die gespeicherte Prozedur mit denselben Parametern testen wie die Abfrage. –