Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

orochmaru

Delphi com mysql

Recommended Posts

tenho o seguinte problema. estou fazendo um cadastro e esta quase tudo certo mas quando tento compilar da um erro. "expected but identifier value found

 

ai vai o trecho do codigo com defeito. se alguem puder analisar e me ajudar. e o piore que tenho so uma semana para terminar o programa.

 

if not at then
    with qusuarios do
      begin
        close;
        sql.Clear;
        sql.Add('insert into usuarios' values ('+mkrg.text+','+ednome.text+','+mkid.text+',
        '+edend.text+','+mkfone.text+','+x+');

Compartilhar este post


Link para o post
Compartilhar em outros sites

orochmaru, seja bem vindo ao Fórum iMasters, conheça nossas regras: Regras do Fórum

 

O que é aquela ' aspas simples depois do nome da tabela?

Remova acredito que não seja necessário.

 

Abraços...

 

ja tentei sem as aspas mas o erro continua. sempre indica um erro no value e no update da o mesmo erro no set.

Já fiz um cadastro antes utilizando esses mesmos parametros e não deu este erro. Só que da outra vez usei delphi 5 e agora uso delphi 7 e ja percebi algumas diferenças tipo no 5 alem da aspa simples utiliva aspas duplas mas no 7 quando uso aspa dupla diz que o caractere é ilegal.

Sepuder me ajudar neste problema ficarei agradecido pois meu trabalho estará salvo e serei um tecnico formado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

if not at then with qusuarios do begin close; sql.Clear; sql.Add('insert into usuarios' values ('+mkrg.text+','+ednome.text+','+mkid.text+', '+edend.text+','+mkfone.text+','+x+');

 

tente algo assim:

 

if not at then    
     with qusuarios do      
     begin        
          close;        
          sql.Clear;        
          sql.Add('insert into usuarios (RG,NOME,ID,ENDERECO,FONE) values (:RG,:NOME,:ID,:ENDERECO,:FONE)');
          ParamByName('RG').Value:= mkrg.text;
          ParamByName('NOME').Value:= ednome.text;
          ParamByName('ID').Value:= mkid.text;
          ParamByName('ENDERECO').Value:= edend.text;
          ParamByName('FONE').Value:= mkfone.text;
          ExecSql;
     end;

sendo:

RG = Campo RG na tabela USUARIOS

NOME = Campo NOME na tabela USUARIOS

ID = Campo ID na tabela USUARIOS

ENDERECO = Campo ENDERECO na tabela USUARIOS

FONE = Campo FONE na tabela USUARIOS

 

 

 

qq coisa post novamente ...

 

abraços !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

if not at then with qusuarios do begin close; sql.Clear; sql.Add('insert into usuarios' values ('+mkrg.text+','+ednome.text+','+mkid.text+', '+edend.text+','+mkfone.text+','+x+');

 

tente algo assim:

 

if not at then    
     with qusuarios do      
     begin        
          close;        
          sql.Clear;        
          sql.Add('insert into usuarios (RG,NOME,ID,ENDERECO,FONE) values (:RG,:NOME,:ID,:ENDERECO,:FONE)');
          ParamByName('RG').Value:= mkrg.text;
          ParamByName('NOME').Value:= ednome.text;
          ParamByName('ID').Value:= mkid.text;
          ParamByName('ENDERECO').Value:= edend.text;
          ParamByName('FONE').Value:= mkfone.text;
          ExecSql;
     end;

sendo:

RG = Campo RG na tabela USUARIOS

NOME = Campo NOME na tabela USUARIOS

ID = Campo ID na tabela USUARIOS

ENDERECO = Campo ENDERECO na tabela USUARIOS

FONE = Campo FONE na tabela USUARIOS

 

 

 

qq coisa post novamente ...

 

abraços !!!

 

Vou tentar.

 

fiz um pouco diferente mas funcionou.

 

mas agora surgiu outro problema.

Os dados foram salvos da primeira vez mas os valores na tabela ficam apenas como 0 e quando tento salvar outra vez da erro de duplicação entre o 0 e o 1.

Vou postar o codigo:

 

procedure Tfrmus.dbusCellClick(Column: TColumn);
begin
  mkrg.text:=dbus.columns[0].field.text;
  ednome.text:=dbus.columns[1].field.text;
  mkid.text:=dbus.columns[2].field.text;
  edend.text:=dbus.columns[3].field.text;
  mkfone.text:=dbus.columns[4].field.text;
    if (dbus.columns[5].Field.text='1') then
      rgsit.itemindex:=1
     else
      rgsit.itemindex:=0;
end;

procedure Tfrmus.btsalvaClick(Sender: TObject);
 var
  x:string;
begin
  if rgsit.itemindex=0 then
    x:='1'

else
  x:='0';

  if not at then
    with qusuarios do
      begin
        close;
        sql.Clear;
        sql.Add('insert into usuarios  values (rg='+mkrg.text+',nome="'+ednome.text+'",idade='+mkid.Text+',endereco="'+edend.text+'",fone='+mkfone.text+',situacao='+x+')');
        try
        execsql;
      except
        application.messagebox ('erro ao gravar','atenção',mb_iconwarning);
       end;
    end
    else
     with qusuarios do
      begin
        close;
        sql.clear;
        sql.add('update usuarios set (rg='+mkrg.text+',nome='+ednome.text+',idade='+mkid.text+',endereco='+edend.text+',fone='+mkfone.text+',situacao='+x+')where rg='+mkrg.text+')');
        try
          execsql;
         except
           application.MessageBox('erro ao alterar','erro',mb_iconerror);
        end;
      end;

end;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro ele está dando ???? post aki o erro, exatamente como aparece ...

 

 

abraços !!!

 

bom o erro é esse: duplicate entry '0' for key 1'.

 

todos os valores que eu coloco v]ao para o banco de dados como 0 e 1 mas n]ao achei a causa do problema ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já debugou seu código para ver que valores está enviando para o seu BD executar e qual a query que está dando o erro? Já pegou esta query e tentou rodar direto no BD colocando os valores passados pelo programa? Já verificou se não está ocorrendo violação de chaves por um erro seu de lógica na passagem dos valores?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiquei um bom tempo verificando o codigo mas o prblema é que no meu banco de dados parece estar tudo correto mas no delphi possivelmente é um erro de logica.

 

Até procurei informações sobre este erro na internet mas todos falavam em problema com violação da unique key só que na minha tabela não tem unique key. mas vou continuar procurando pode ser que eu ache o defeito apesar de ter feito varias alterações nos possiveis suspeitos mas até agora não deu resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.