Insert apenas se não existir??? How?

Delphi

27/11/2003

Colegas podem me ajudar? Desejo saber como faço pra no botão de inserir, ele só complete a operação de inserção se os códigos não existirem na tabela.
Estou usando SQL Server 7.

Tabela Contas.
CAMPOS
NumAgencia: integer
NumConta: integer
Limite: money
Saldo: money

Portanto só poderia inserir se a agencia E a conta digitada não existirem no banco!

Grato! :lol:


Dead_thinker

Dead_thinker

Curtidas 0

Respostas

Airto

Airto

27/11/2003

faz um select passando como chave o campo, e verifica se existe!!


GOSTEI 0
Dead_thinker

Dead_thinker

27/11/2003

Cara obrigado pela ajuda, eu tb acho q deve usar um select, mas não sei COMO usar para esse caso, acho q teria q ter uma procedure no SQL, mas não tenho nem idéia de como é o comando. Hhehehehhehe :lol: .
Imaginei q teria um ´If...select nãoRetornarNada then inclua´, mas não sei como fazer isso em termos de comandos SQL.
Foi malz ai se não expliquei direito!

Obrigado pelo help! :D


GOSTEI 0
Nigro

Nigro

27/11/2003

if query1.RecordCount = 0 then
append

post
else
edit

ou voce pode usar um locate

if locate.....
edit
else
append


GOSTEI 0
Dead_thinker

Dead_thinker

27/11/2003

Eu tentei colocar assim ô, mas não sei pq naum tá dando certo. Se alguém puder me ajudar agradeço!

Segue código:

procedure TForm4.Button1Click(Sender: TObject);
begin
with Form1.QVerify do
begin
CLose;
SQl.Clear;
SQL.Add(´Select Count(*)´);
SQL.Add(´from Contas´);
SQL.Add(´where NumAge = (:0_nAG) and NumConta = (:1_nCT)´);
Parameters[0].Value:= strtoint(Edit1.Text);
Parameters[1].Value:= strtoint(Edit2.Text);
ExecSQL;
Open;
end;
If (Form1.QVerify.RecordCount= 0) then
begin
with Form1.QGeral do
begin
Close;
SQL.Clear;
SQL.Add(´insert into CONTAS´);
SQL.Add(´(Numage, Numconta, Limite, Saldo) Values´);
SQl.Add(´(:0_nAG, :1_nCT, :2_Lim, :3_Sald)´);
Parameters[0].Value:= strtoint(Edit1.Text);
Parameters[1].Value:= strtoint(Edit2.Text);
Parameters[2].Value:= strtofloat(Edit3.Text);
Parameters[3].Value:= strtofloat(Edit4.Text);
ExecSQL;
end;
ShowMessage(´Registro Incluído!´);;
Button5Click(Sender);
end
Else
ShowMessage(´Agência/Conta existentes!´)
end;


GOSTEI 0
Fbag22

Fbag22

27/11/2003

Crie uma Procedure com este codigo SQL:

SELECT NumAgencia, NumConta, Limite, Saldo
FROM dbo.Contas
WHERE (NumConta = @Conta)

no componente ADO selecione esta procedure e veja a propriedade Parameters, deve ter dois valores: @return ou alguma coisa assim e @Conta, agora via codigo, basta fornecer o parametro.

ADODataset.Parameters[1].Value := NumdaConta;
ADODataset.Requery;

e então é só contar os campos

IF ADODataset.RecordCount > 0 Then
ShowMessage(´Existe esta conta´)
ELSE
os comandos de Insert...


Espero que tenha ajudado


GOSTEI 0
Fbag22

Fbag22

27/11/2003

Seu código parece estar certo, mas se vc cria o select em runtime costuma dar alguns problemas, por exemplo vc tem que colocar os valores do parametro como null, mas tente no lugar de
SQL.Add(´where NumAge = (:0_nAG) and NumConta = (:1_nCT)´);
colocar
SQL.Add(´where NumAge = @0_nAG and NumConta = @1_nCT´);


GOSTEI 0
POSTAR