Inserir valor de uma tabela/coluna em outra

Delphi

08/06/2004

e ai galera..acabei de cadastrar e já estou com uma perguntinha...


e assim:
uso delphi 7 e tenhu 2 tabelas em paradox...

eu queria que quando fizesse uma pesquisa na tabela2 e axasse entao ela passaria o valor para a tabela1..ate fix um codigozinho para isso mas ele me da erro de key violation...o codigo e o seguinte:

if table2.findkey([edit1.text]) then
var var_aux:string;
begin
var_aux:=table2.fieldbyname(´nome´).asstring;
table1.edit;
table1.insert;
table1.fieldbyname(´nome´).asstring:=var_aux;
table1.post;
end;

ele me da key violation... o que nao compreendo pois ele nem sequer esta por dois valores iguais na mesma tabela.. mas sim em tabelas diferentes....


por favor alguem que me ajude...

muito obrigado...adorei esse forum...

[b:c6122f2a9d][color=red:c6122f2a9d]Título editado pelo Moderador (AZ) - Removido: ´problema,,,,,´[/color:c6122f2a9d][/b:c6122f2a9d]


Cyberchip

Cyberchip

Curtidas 0

Respostas

Cyberchip

Cyberchip

08/06/2004

um forum tao grande com tantos users e ninguem me pode ajudar????


GOSTEI 0
Repa

Repa

08/06/2004

Qdo vc dá edit na tabela vc põe em modo de edição(alteração num registro que já existe), p/ inserir um novo dado vc tem que pôr append.

if table2.findkey([edit1.text]) then
var var_aux:string;
begin
var_aux:=table2.fieldbyname(´nome´).asstring;
table1.append;
table1.fieldbyname(´nome´).asstring:=var_aux;
table1.post;
end;


GOSTEI 0
Cyberchip

Cyberchip

08/06/2004

agradecido pela sua resposta mais continuo com o mesmo problema....me continua a dar key violation...

se me puder ajudar agradecia


GOSTEI 0
Thomaz_prg

Thomaz_prg

08/06/2004

Colega, para tentar lhe ajudar, tenho apenas uma pergunta a te fazer. Na tabela que você está tentando inserir os dados há uma chave primária, se sim, gostaria de saber se é este campo que vc está lançando os dados?

Pois, se na tabela q vc está tentando incluir os dados existir um campo como chave primária e o mesmo não for preenchido, não irá funcionar.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

08/06/2004

Colega,

Por gentileza, coloque a estrutura das tabelas para que possamos avançar mais.


GOSTEI 0
Cyberchip

Cyberchip

08/06/2004

muito agradeciado pelas respostas..e peço imensa desculpas por nao ter respondido logo mas estive sem tempo...

tenhu duas tabelas com a seguinte estrutura

tabela1

cod_produto:integer; -> chave primaria
nome:alphanumerico;
stock:inetger;
preco:integer;
cod_factura:integer;

table2
cod_produto:integer; ->chave primaria
nome:alphanumerico;
mesa:integer;
empregado:integer;
quantidade:integer;
preco:integer;
cod_cartao:integer;

antes nao estava preenchendo o campo com a chave primaria mas agoora estou e continua com a keyviolation...

o codigo que tenho e esse:

procedure Tform_vendas.but_adicionarClick(Sender: TObject);
var var_aux:string;
begin
table1.open;
if table3.findkey([edit1.text]) then
begin
var_aux:=table3.fieldbyname(´nome´).asstring;
table1.append;
table1.fieldbyname(´nome´).asstring:=var_aux;
table1.FieldByName(´cod_produto´).AsInteger:=strtoint(edit1.Text);
table1.post;
end;
end;


GOSTEI 0
Cyberchip

Cyberchip

08/06/2004

muito agradecido pelas respostas..e peço imensa desculpas por nao ter respondido logo mas estive sem tempo...

tenhu duas tabelas com a seguinte estrutura

tabela1

cod_produto:integer; -> chave primaria
nome:alphanumerico;
stock:inetger;
preco:integer;
cod_factura:integer;

table2
cod_produto:integer; ->chave primaria
nome:alphanumerico;
mesa:integer;
empregado:integer;
quantidade:integer;
preco:integer;
cod_cartao:integer;

antes nao estava preenchendo o campo com a chave primaria mas agoora estou e continua com a keyviolation...

o codigo que tenho e esse:

procedure Tform_vendas.but_adicionarClick(Sender: TObject);
var var_aux:string;
begin
table1.open;
if table3.findkey([edit1.text]) then
begin
var_aux:=table3.fieldbyname(´nome´).asstring;
table1.append;
table1.fieldbyname(´nome´).asstring:=var_aux;
table1.FieldByName(´cod_produto´).AsInteger:=strtoint(edit1.Text);
table1.post;
end;
end;


GOSTEI 0
Cyberchip

Cyberchip

08/06/2004

alguem que me ajude por favor....estou mesmo precisando disso pronto....


GOSTEI 0
Xisto

Xisto

08/06/2004

Como vc tem tanta certeza que
edit1.text
ja nao existe na table1 ?
Nao caberia um teste pra saber se ele ja existe la ?
Por ex.:

procedure Tform_vendas.but_adicionarClick(Sender: TObject); 
var var_aux:string; 
begin 
  table1.open; 
  if table3.findkey([edit1.text]) then
  begin  
    var_aux:=table3.fieldbyname(´nome´).asstring; 
    if not table1.findkey([edit1.text]) then   
      begin
        table1.append; 
        table1.fieldbyname(´nome´).asstring:=var_aux; 
        table1.FieldByName(´cod_produto´).AsInteger:=strtoint(edit1.Text); 
        table1.post; 
     end;
  end; 
end;


Espero ter ajudado.


GOSTEI 0
Cyberchip

Cyberchip

08/06/2004

e o mesmo problema que continuo tendo..ele continua a dar key violation....ate so coloquei um registo na tabela e experimentei colocar outro diferente..mas ele insiste em dar key violation...outou começando a fritar neuronios....


GOSTEI 0
Xisto

Xisto

08/06/2004

Sera que esta tabela nao esta com algum problema no indice ?
Tente incluir registros manualmente via database desktop !


GOSTEI 0
Repa

Repa

08/06/2004

Talvez eu esteja errada mas acho que vc deveria tentar rodar o programa c/ f7.
Vc pode marcar um ponto (por ex, o primeiro if dessa procedure) e dar o f7 p/ rodar, assim vc iria rodar linha por linha e saber em que linha dá problema e qual o valor que tem no edit1.


GOSTEI 0
Cyberchip

Cyberchip

08/06/2004

sim faz fiz debugging ao programa... e e no table1.post e que da key violation.. e ja inseri valores manualmente e da para inserir...estou a perder a cabeça.....


GOSTEI 0
Cyberchip

Cyberchip

08/06/2004

após muitas horas de debbunging.. resolvi checkar a estrutura da tabela..e não me deparo com um indice mal feito na tabela.... estava fulo com o programa e ainda fiquei mais fulo porque perdi tantas horas e no entanto e um erro mesmo muito estupido... peço imensas desculpas por vos ter ocupado o vosso tempo com um erro tao estupido e tambem agradeço aos que responderam a minha duvida....muito obrigada....

um abraço para todos.... :D :D :D :D


GOSTEI 0
POSTAR