Insert apenas se não existir??? How?
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:
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
Curtidas 0
Respostas
Airto
27/11/2003
faz um select passando como chave o campo, e verifica se existe!!
GOSTEI 0
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
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
27/11/2003
if query1.RecordCount = 0 then
append
post
else
edit
ou voce pode usar um locate
if locate.....
edit
else
append
append
post
else
edit
ou voce pode usar um locate
if locate.....
edit
else
append
GOSTEI 0
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;
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
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
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
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´);
SQL.Add(´where NumAge = (:0_nAG) and NumConta = (:1_nCT)´);
colocar
SQL.Add(´where NumAge = @0_nAG and NumConta = @1_nCT´);
GOSTEI 0