SQL Generico com Oleraviant

Delphi

08/10/2009

Pessoal este codigo abaixo e um insert generio que passo olevariant e ele pega os dados, cria a sql de insercao e alimenta os parametros ..So que quando ele vai alimentar os paramentros ele da um DELPHI EXCEPTION e sai do loop...Ja olhei se ele tava mento criando os paramentros e esta criando certo ...entao gostaria de saber se alguem tem alguma ideia

Obrigado

Michel.


# o delphi sai da rotina quando chega nesta parte

Sql.ParamByName(campo).AsInteger := cds.Fields[i].AsInteger;

Alguma Sugestao por favor ?

function TClasseBaseServer.doInternalInsert(Data: TDataTransport;
Table: string): integer;
var
Sql : TSQLQuery;
Separador,campo : string;
i : Integer;
Field : TFieldType;
CDS : TClientDataSet;
begin
try
try
//Result := 0;
CDS := TClientDataSet.Create(nil);
CDS.Close;
CDS.Data := Data;
CDS.Open;

Sql := TSQLQuery.Create(nil);
Sql.SQL.Clear;

// comeca a montar a sql de insert

Sql.SQL.Add(´Insert into ´);
sql.SQL.Add(trim(Table));
sql.SQL.Add(´(´);
Separador := ´´;

// pega os campos

for I := 0 to CDS.FieldCount - 1 do
begin
Sql.SQL.Add(Separador + CDS.Fields[i].FieldName);
Separador := ´,´;
end;

sql.SQL.Add(´)´);
sql.SQL.Add(´Values´);
sql.SQL.Add(´(´);
Separador := ´´;

// adiciona os parametros

for I := 0 to CDS.FieldCount - 1 do
begin
Sql.SQL.Add(Separador + ´ :´ + CDS.Fields[i].FieldName);
Separador := ´,´;
end;

sql.SQL.Add(´)´);

// seta os patametros
sql.ParamCheck := true;

for I := 0 to CDS.FieldCount - 1 do
begin
campo := CDS.Fields[i].FieldName;
Field := CDS.Fields[i].DataType;
case field of
ftString : begin
Sql.ParamByName(QuotedStr(campo)).AsString :=
cds.Fields[i].AsString;
end;
ftInteger: begin
Sql.ParamByName(QuotedStr(campo)).AsInteger :=
cds.Fields[i].AsInteger;
end;
ftFloat : begin
Sql.ParamByName(QuotedStr(campo)).AsFloat :=
cds.Fields[i].AsFloat;
end;
ftDate : begin
Sql.ParamByName(QuotedStr(campo)).AsString :=
formatdatetime(´dd/mm/yy´, cds.Fields[i].AsDateTime);
end;
end;
campo := ´´;
end;
finally
Result := Sql.ExecSQL();
FreeAndNil(CDS);
FreeAndNil(Sql);
end;
except
on e : Exception do
begin
FreeAndNil(CDS);
FreeAndNil(Sql);
raise Exception.Create(e.Message);
end;
end;
end


Mortarello

Mortarello

Curtidas 0

Respostas

Afarias

Afarias

08/10/2009

vc depurou? qual exatamente a mensagem de erro e em q linha ocorre?


T+


GOSTEI 0
POSTAR