AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi StoredProcedure mit ADO und MS SQL Server 2000
Thema durchsuchen
Ansicht
Themen-Optionen

StoredProcedure mit ADO und MS SQL Server 2000

Ein Thema von cds · begonnen am 30. Jun 2005 · letzter Beitrag vom 1. Jul 2005
Antwort Antwort
cds

Registriert seit: 4. Okt 2004
9 Beiträge
 
Delphi 7 Professional
 
#1

StoredProcedure mit ADO und MS SQL Server 2000

  Alt 30. Jun 2005, 14:53
Datenbank: MS SQL • Version: 2000 • Zugriff über: ADO
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:
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
2. Mein Zugriff aus Delphi heraus:
Delphi-Quellcode:
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
Mein Problem tritt auf, wenn ich meiner ADOStoredProc den Parameter übergeben will!
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]
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: StoredProcedure mit ADO und MS SQL Server 2000

  Alt 30. Jun 2005, 14:58
Zitat von cds:
2. Mein Zugriff aus Delphi heraus:
Delphi-Quellcode:
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
Mein Problem tritt auf, wenn ich meiner ADOStoredProc den Parameter übergeben will!
Dann läuft die Anwendung in eine exception.
Du musst dem ADOStoredProc Objekt immer zuerst die Connection geben,
danach den Procedurename angeben und dann die Parameter "refreshen".
Delphi-Quellcode:
  Assert(Assigned(FADOStoredProc));
  FADOStoredProc.Connection := self.ADOConnection;
  FADOStoredProc.ProcedureName := 'spGetCrntEvalsForTeststand_2';
  FADOStoredProc.Parameters.Refresh; // <---
  FADOStoredProc.Parameters.ParamByName('@TeststandIndex').Value := 1;
[edit=alcaeus]Delphi-Tags im Zitat eingefuegt. Mfg, alcaeus[/edit]
Andreas
  Mit Zitat antworten Zitat
cds

Registriert seit: 4. Okt 2004
9 Beiträge
 
Delphi 7 Professional
 
#3

Re: StoredProcedure mit ADO und MS SQL Server 2000

  Alt 30. Jun 2005, 15:01
Danke für die schnelle Antwort shmia!

Kaum richtig gemacht - und schon funktioniert's....

Das rettet mir den Nachmittag!

cds...
  Mit Zitat antworten Zitat
testoli

Registriert seit: 21. Aug 2004
Ort: Köln
36 Beiträge
 
Delphi 2005 Architect
 
#4

Re: StoredProcedure mit ADO und MS SQL Server 2000

  Alt 1. Jul 2005, 16:43
Hallo,

ich habe Eurer Beispiel bei mir ausprobiert.

SP:
SQL-Code:
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
Nun habe ich einen Button_Click Event:

Delphi-Quellcode:
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;
Wenn ich den Befehl sende, erhalte ich folgenden Fehler:

"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]
Oliver
Aller Anfang ist schwer!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: StoredProcedure mit ADO und MS SQL Server 2000

  Alt 1. Jul 2005, 16:53
Zitat von testoli:
Delphi-Quellcode:
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;
Wenn ich den Befehl sende, erhalte ich folgenden Fehler:
"Commandtext gibt keine Ergebnissmenge zurück!"
Was habe ich nicht beachtet???
Nur Abfragen mit SELECT geben eine Ergebnismenge zurück. Diese werden mit .Open geöffnet.
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:
try
    // Zugriff auf Datenbank
    DM.DM_Main.SP_NEW_ADRTYP.ExecSQL;
except
   exit;
end;
Der Datenbankzugriff funktioniert nicht, keine Fehlermeldung erscheint (nur in der IDE) und keiner weiss warum die Sache nicht funktioniert.
Dann lieber try ... except komplett weglassen.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz