Inserir/Atualizar com Sql
Amigos estou com problemas sérios em um formulário com TEdits, TMemo
onde faço atualização em uma Tabela do Interbase.
O usuário preenche todas as informações do formulário e ao clicar no botão confirmar aparece o seguinte erro:
[b:26f36b8758]conversion error from string ´Blob´[/b:26f36b8758]
Tudo isto por causa de um campo BLOB (observações), se tirar ele tudo funciona, mas preciso gravá-lo.
Bom foi me dito aqui no fórum para eu trocar o tipo do parâmetro do componente SQL que supostamente eu teria no form, é que eu não expliquei direito, eu não tenho este componente eu crio em tempo de execução, ai é que vem o problema. Como mudar o tipo de parametro se não tenho este componente.
Olhem abaixo como eu crio:
procedure Performsql(cSql : string);
var Q : TSQLQuery;
begin
Q := nil;
with D DO begin // Datamodule
Q := TSQLQUERY.Create(Q);
Q.SQLConnection := CONEXAO // TSQLConnection;
Q.SQL.Clear;
Q.SQL.Add(cSql);
Q.ExecSQL;
end;
end;
Eu passo todas as informações para esta funcao Performsql, para não ter que ficar colocando os componentes na tela:
exemplo:
Performsql(´Delete from CLIENTES´);
Performsql(Update set CLISALDO = 0 WHERE CLICOD = ´+EDit1.text);
Entenderam o que quis dizer, se alguem puder me ajudar com isto, agradeço muito.
César Alexandre - Piracicaba - SP
xandepir@ig.com.br
onde faço atualização em uma Tabela do Interbase.
O usuário preenche todas as informações do formulário e ao clicar no botão confirmar aparece o seguinte erro:
[b:26f36b8758]conversion error from string ´Blob´[/b:26f36b8758]
Tudo isto por causa de um campo BLOB (observações), se tirar ele tudo funciona, mas preciso gravá-lo.
Bom foi me dito aqui no fórum para eu trocar o tipo do parâmetro do componente SQL que supostamente eu teria no form, é que eu não expliquei direito, eu não tenho este componente eu crio em tempo de execução, ai é que vem o problema. Como mudar o tipo de parametro se não tenho este componente.
Olhem abaixo como eu crio:
procedure Performsql(cSql : string);
var Q : TSQLQuery;
begin
Q := nil;
with D DO begin // Datamodule
Q := TSQLQUERY.Create(Q);
Q.SQLConnection := CONEXAO // TSQLConnection;
Q.SQL.Clear;
Q.SQL.Add(cSql);
Q.ExecSQL;
end;
end;
Eu passo todas as informações para esta funcao Performsql, para não ter que ficar colocando os componentes na tela:
exemplo:
Performsql(´Delete from CLIENTES´);
Performsql(Update set CLISALDO = 0 WHERE CLICOD = ´+EDit1.text);
Entenderam o que quis dizer, se alguem puder me ajudar com isto, agradeço muito.
César Alexandre - Piracicaba - SP
xandepir@ig.com.br
Cesarpir
Curtidas 0
Respostas
Centopocento
03/05/2003
Para gravar um campo memo eu tenho muita dificuldades também por isso criei esta rotina, de uma olhada e depois me diga oque acha
function GravaMemo( Tabela, Campo: String; Chave: TField; Memo: TMemo):Boolean;
var IbTable: TIbTable; IBQuery: TIBQuery;
begin
IBQuery := TIBQuery(Chave.DataSet);
IbTable := TIBTable.Create(IBQuery);
IbTable.TableName := Tabela;
IbTable.Database := IBQuery.Database;
IbTable.Transaction := IBQuery.Database.DefaultTransaction;
try
Result := Estado(IbTable,teAbre) and
IbTable.Locate( Chave.FieldName,
Chave.Value,[]) and
Estado(IbTable,teEdita);
if not Result then Exit;
IbTable.FieldByName(Campo).AsString := Memo.Text;
Result := Estado(IbTable,teGrava);
SetIBTransaction(IbTable.Transaction,Result);
except Result := False;
end;
end;
T+
function GravaMemo( Tabela, Campo: String; Chave: TField; Memo: TMemo):Boolean;
var IbTable: TIbTable; IBQuery: TIBQuery;
begin
IBQuery := TIBQuery(Chave.DataSet);
IbTable := TIBTable.Create(IBQuery);
IbTable.TableName := Tabela;
IbTable.Database := IBQuery.Database;
IbTable.Transaction := IBQuery.Database.DefaultTransaction;
try
Result := Estado(IbTable,teAbre) and
IbTable.Locate( Chave.FieldName,
Chave.Value,[]) and
Estado(IbTable,teEdita);
if not Result then Exit;
IbTable.FieldByName(Campo).AsString := Memo.Text;
Result := Estado(IbTable,teGrava);
SetIBTransaction(IbTable.Transaction,Result);
except Result := False;
end;
end;
T+
GOSTEI 0