Boa tarde delhiana...
Seguinte: to precisando desenvolver uma rotina para Insert e Update
em runtime. para insert tudo bem... faço o seguinte:
Q.SQL.Text := 'INSERT into '+tb.TableName+
' ('+sFields+')'+
' Values '+
' ('+sValues+')';
onde tb é uma TIBOTable. sFields são os campos e sValues os campos
precedidos de ':' (parametrizados), funciona joinha...
mas para update preciso saber qual(is) é(são) os campos q fazem parte
da PRIMARYKEY da tb.TableName pra construir a instrução WHERE,
ficando algo assim:
Q.SQL.Text := 'UPDATE '+tb.TableName+' SET '+
' ('+sFields+') '+
'Where '+sPrimary+
' = :'+tb.Fields.Fields[numcampo].Value;
alguem pode me ajudar? só pra ter uma ideia + clara do que eu quero,
a rotina de insert vai abaixo:

procedure InstrucaoFireBird_Insert( tb: TIBOTable );
var
Q: TIBOQuery;
i: Integer;
sFields, sValues: String;
begin
Q := TIBOQuery.Create(nil);
try
// Estabelece a conexão com o banco...
Q.IB_Connection := tb.IB_Connection;
// limpa SQL e variaveis...
Q.SQL.Clear;
sFields := ''; sValues := '';
// gera strings dos campos e variaveis para atribuição...
for i := 0 to tb.Fields.Count - 1 do begin
// Campos...
if sFields = '' then
sFields := tb.Fields.Fields[ i ].FieldName
else
sFields := sFields+','+
tb.Fields.Fields[ i ].FieldName;
// Variaveis...
if sValues = '' then
sValues := ':'+tb.Fields.Fields[ i ].FieldName
else
sValues := sValues+',:'+
tb.Fields.Fields[ i ].FieldName;
end;
// Monta a instrução SQL...
Q.SQL.Text := 'INSERT into '+tb.TableName+
' ('+sFields+')'+
' Values '+
' ('+sValues+')';
// Carrega os valores dos parametros com base no registro
// posicionado da tabela...
for i := 0 to tb.Fields.Count - 1 do begin
Q.Params[i].Value := tb.Fields.Fields[i].Value;
end;
// Prepara e executa a SQL...
Q.Prepare;
Q.ExecSQL;
finally
Q.Free;
end;
end;

Agradeço qq ajuda... só preciso saber: como capturar os campos q
fazem parte da Primary Key da tabela.
Obrigadão...
Sérgio






-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a