![]() |
Datenbank: MS SQL • Version: 2000 • Zugriff über: ADO
StoredProcedure mit ADO und MS SQL Server 2000
Hallo DPler,
ich versuche aus meiner Anwendung heraus eine StoredProcedure auf dem MS SQL Server 2000 auszuführen. Dabei habe ich einige Probleme. 1. Die StoredProcedure aus dem Server sieht so aus:
SQL-Code:
2. Mein Zugriff aus Delphi heraus:
CREATE PROCEDURE [dbo].[spGetCrntEvalsForTeststand_2]
@TeststandIndex int AS SELECT dbo.TESTSTAND.TSTName, dbo.EVALUATION.CrntEVAL FROM dbo.EVALUATION INNER JOIN dbo.TESTTYPE ON dbo.EVALUATION.CrntTYPE = dbo.TESTTYPE.CrntTYPE INNER JOIN dbo.TESTSTAND ON dbo.TESTTYPE.CrntTST = dbo.TESTSTAND.CrntTST WHERE (dbo.TESTSTAND.CrntTST = @TeststandIndex) GO
Delphi-Quellcode:
Mein Problem tritt auf, wenn ich meiner ADOStoredProc den Parameter übergeben will!
try
self.FADOStoredProc.ProcedureName := 'spGetCrntEvalsForTeststand_2'; self.FADOStoredProc.Parameters.ParamByName('@TeststandIndex').Value := 1; self.FADOStoredProc.Connection := self.ADOConnection; self.FADOStoredProc.Open; dataSP := self.FADOStoredProc.Recordset; if dataSP.RecordCount = self.FADOStoredProc.RecordCount then beep; except exit; end;//end try..except Dann läuft die Anwendung in eine exception. Anmerkung: Aus C# heraus habe ich mit dieser SP absolut keine Probleme! Hat jemand eine Idee oder Lösung parat? [edit=alcaeus]sql- und delphi-Tags eingefuegt. In Zukunft bitte selbst machen, Danke Mfg, alcaeus[/edit] |
Re: StoredProcedure mit ADO und MS SQL Server 2000
Zitat:
danach den Procedurename angeben und dann die Parameter "refreshen".
Delphi-Quellcode:
[edit=alcaeus]Delphi-Tags im Zitat eingefuegt. Mfg, alcaeus[/edit]
Assert(Assigned(FADOStoredProc));
FADOStoredProc.Connection := self.ADOConnection; FADOStoredProc.ProcedureName := 'spGetCrntEvalsForTeststand_2'; FADOStoredProc.Parameters.Refresh; // <--- FADOStoredProc.Parameters.ParamByName('@TeststandIndex').Value := 1; |
Re: StoredProcedure mit ADO und MS SQL Server 2000
Danke für die schnelle Antwort shmia!
Kaum richtig gemacht - und schon funktioniert's.... Das rettet mir den Nachmittag! cds... |
Re: StoredProcedure mit ADO und MS SQL Server 2000
Hallo,
ich habe Eurer Beispiel bei mir ausprobiert. SP:
SQL-Code:
Nun habe ich einen Button_Click Event:
CREATE PROCEDURE [INS_ADR_TYP]
( @ADRT_WERT_2 [varchar](30) ) AS SET NOCOUNT ON INSERT INTO [CS_SHOP].[dbo].[cs_Adresstyp] ( [ADRT_WERT], [CREATED], [MODIFIED], [AKTIONUSER]) VALUES ( @ADRT_WERT_2, getdate(), getdate(), user) SET NOCOUNT OFF GO
Delphi-Quellcode:
Wenn ich den Befehl sende, erhalte ich folgenden Fehler:
procedure TForm2.Button1Click(Sender: TObject);
begin try DM.DM_Main.SP_NEW_ADRTYP.Parameters.Refresh; DM.DM_Main.SP_NEW_ADRTYP.Parameters.ParamByName('@ADRT_WERT_2').Value := TB_Wert.Text; DM.DM_Main.SP_NEW_ADRTYP.Open; except exit; end; "Commandtext gibt keine Ergebnissmenge zurück!" Was habe ich nicht beachtet??? LG Oliver [edit=alcaeus]code-Tags gesetzt. In Zukunft bitte selbst machen. Danke :) Mfg, alcaeus[/edit] |
Re: StoredProcedure mit ADO und MS SQL Server 2000
Zitat:
Alles andere (INSERT, UPDATE, DELETE, ALTER ...) gibt keine Ergebnismenge zurück und wird mit .ExecSQL ausgeführt. Übrigens, folgendes sollte man nicht tun:
Delphi-Quellcode:
Der Datenbankzugriff funktioniert nicht, keine Fehlermeldung erscheint (nur in der IDE) und keiner weiss warum die Sache nicht funktioniert.
try
// Zugriff auf Datenbank DM.DM_Main.SP_NEW_ADRTYP.ExecSQL; except exit; end; Dann lieber try ... except komplett weglassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz