![]() |
Text-Parameterübergabe an Stored Procedure mit ADO
Moin Gemeinde!
Untersatz: MSSQL-2000-SP3,MDAC2.8,Delphi5 Ent.,Win2k Muß für mein aktuelles Projekt mit ADO arbeiten und treffe auf Probleme mit der Übergabe von Textparametern. Aber vielleicht hab ich ja mal wieder Tomaten auf den Augen:
SQL-Code:
Mit BDE (TQuery) konnte ich bisher diesen Code ausführen:
create table Dummy (
idDummy int identity(1,1) not null, T_Beschreibung text null) GO create procedure SP_Dummy (@T_Beschreibung text) as begin insert into Dummy (T_Beschreibung) values (@T_Beschreibung) end GO
Delphi-Quellcode:
Mit diesem Ado-Pendent gibt es Stress, sobald der Text Hochkommas enthält:
//irgendwo gibt es z.B. ein TMemo: Memo1
procedure PutDataIn; var qryTemp : TQuery; begin qryTemp := TQuery.Create(nil); try qryTemp.SQL.Add('Execute SP_Dummy :MeinText'); qryTemp.Prepare; qryTemp.ParamByName('MeinText').AsString := Memo1.Lines.Text; qryTemp.ExecSql; finally qryTemp.Free; end; end;
Delphi-Quellcode:
funktioniert ebensowenig wie:
procedure PutDataIn;
var MyStream : TMemoryStream; aqryTemp : TAdoQuery; DummyString : String; DummyPtr : Pointer; begin aqryTemp := TADOQuery.Create(nil); MyStream := TMemoryStream.Create; try aqryTemp.Connection := IrgendeineAdoConnection; aqryTemp.SQL.Add('execute SP_Dummy :MeinText'); aqryTemp.Parameters.ParamByName('MeinText').DataType := ftMemo; aqryTemp.Prepare; DummyString := Memo1.Lines.Text; DummyPtr := @DummyString; MyStream.Write(DummyPtr,Length(DummyString)); aqryTemp.Parameters.ParamByName('MeinText').LoadFromStream(MyStream,ftMemo); aqryTemp.ExecSQL; finally MyStream.Free; TempQry.Free; end; end;
Delphi-Quellcode:
sobald der das Memo Hochkommatas (') enthält, kommt Müll raus, da nun ADO/MSSQL einen zusätzlichen Parameter übergibt (der erste ist ja abgeschlossen :-(.
procedure PutDataIn;
var aqryTemp : TAdoQuery; begin aqryTemp := TADOQuery.Create(nil); try aqryTemp.Connection := IrgendeineAdoConnection; aqryTemp.SQL.Add('execute SP_Dummy :MeinText'); aqryTemp.Parameters.ParamByName('MeinText').DataType := ftMemo; aqryTemp.Prepare; aqryTemp.Parameters.ParamByName('MeinText').Value := Memo1.Lines.Text; aqryTemp.ExecSQL; finally TempQry.Free; end; end; Jemand 'ne Idee? |
Re: Text-Parameterübergabe an Stored Procedure mit ADO
Hallo Leuselator,
und warum verwendest Du nicht TADOStoredProc? |
Re: Text-Parameterübergabe an Stored Procedure mit ADO
Gewohnheit - hatte bisher noch keinen Vorteil in der Verwendung von TStoredProc gesehen.
Ist das bei TADOStordeProc nun anders? - Teste bereits... |
Re: Text-Parameterübergabe an Stored Procedure mit ADO
Hmm - funktioniert.
Allerdings ist es wenn man das dynamisch macht ziemlich viel Tipperei. Wenn also jemand hier 'ne Idee wie das mit Ado-Query funktioniert - immer her damit. Danke Rainer! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz