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:
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
Mit
BDE (TQuery) konnte ich bisher diesen Code ausführen:
Delphi-Quellcode:
//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;
Mit diesem
Ado-Pendent gibt es Stress, sobald der Text Hochkommas enthält:
Delphi-Quellcode:
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;
funktioniert ebensowenig wie:
Delphi-Quellcode:
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;
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
.
Jemand 'ne Idee?