Erro ao inserir dados

Delphi

23/05/2007

Bom dia Pessoal, voltei a trabalhar com delphi para atualizar um item do sistema, porém estou com a seguinte dificuldade em inserção.
Tenho a seguinte tabela:
cod_acesso integer,
cod_funcionario integer,
data_acesso date,
hora_acesso time

Quando faço a inserção desta forma:
      SQLQuery2.SQL.Add(´insert into acessos_local (cod_acesso,cod_funcionario,data_acesso,hora_acesso) values (´+´´´´+IntToStr(cod_acesso)+´´´´+´,´+´´´´+SQLQuery1.FieldValues[´cod_func´]+´´´´+´,´+´´´´+aux_data+´´´´+´,´+´´´´+TimeToStr(time)+´´´´+´)´);
      SQLQuery2.ExecSQL;


aparece uma mensagem dizendo o seguinte:
could not convert variant of type (String) into type (Double),


Creio que seja alguma relação com incompatibilidade, porém tentei e ainda não descobri como consertar isso.

Aguardo ajuda...


Flaviobrazuca

Flaviobrazuca

Curtidas 0

Respostas

Jurandi

Jurandi

23/05/2007

Caro,
Num insert em uma tabela vc deve passar cada campo de forma isolada, tipo:

insert into tabela (nomecoluna1, nomecoluna2, nomecoluna3) values (valor1, valor2, valor3)

Sds


GOSTEI 0
Adriano Santos

Adriano Santos

23/05/2007

Caro, Num insert em uma tabela vc deve passar cada campo de forma isolada, tipo: insert into tabela (nomecoluna1, nomecoluna2, nomecoluna3) values (valor1, valor2, valor3) Sds

      SQLQuery2.SQL.Add(´insert into acessos_local (cod_acesso,cod_funcionario,data_acesso,hora_acesso) values (´+´´´´+IntToStr(cod_acesso)+´´´´+´,´+´´´´+SQLQuery1.FieldValues[´cod_func´]+´´´´+´,´+´´´´+aux_data+´´´´+´,´+´´´´+TimeToStr(time)+´´´´+´)´);
      SQLQuery2.ExecSQL;

Isolada? Não entendi [b:37b044e969]jurandi[/b:37b044e969]. Não está isolado acima?


Bom dia Pessoal, voltei a trabalhar com delphi para atualizar um item do sistema, porém estou com a seguinte dificuldade em inserção. Tenho a seguinte tabela: cod_acesso integer, cod_funcionario integer, data_acesso date, hora_acesso time Quando faço a inserção desta forma:
      SQLQuery2.SQL.Add(´insert into acessos_local (cod_acesso,cod_funcionario,data_acesso,hora_acesso) values (´+´´´´+IntToStr(cod_acesso)+´´´´+´,´+´´´´+SQLQuery1.FieldValues[´cod_func´]+´´´´+´,´+´´´´+aux_data+´´´´+´,´+´´´´+TimeToStr(time)+´´´´+´)´);
      SQLQuery2.ExecSQL;
aparece uma mensagem dizendo o seguinte: [quote:37b044e969] could not convert variant of type (String) into type (Double),


Creio que seja alguma relação com incompatibilidade, porém tentei e ainda não descobri como consertar isso.

Aguardo ajuda...[/quote:37b044e969]
[b:37b044e969]Flavio[/b:37b044e969] o que você fez está correto, porém um pouco confuso. Não é necessário o uso deste monte de áspas que colocou. Pra ficar mais simples o código você pode usar QuotedStr(SuaVariavel), assim fica mais visível e o QuotedStr insere as áspas pra você.

Bem, eu dei uma ´organizada´ no seu código se não me leva a mal ok?
Dá uma olhada.


procedure TForm1.Button1Click(Sender: TObject);
var
  Cod_Acesso : Integer;
  Aux_Data: TDateTime;
begin
  Cod_Acesso := 0; //Alguma coisa;
  Aux_Data := Now; //Alguma coisa;
  with sqlQuery2, SQL do
  begin
    Close;
    Clear;

    Add(´INSERT INTO ACESSOS_LOCAL (COD_ACESSO, COD_FUNCIONARIO, DATA_ACESSO, HORA_ACESSO)´);
    Add(´VALUES´);
    Add(´(:COD_ACESSO, :COD_FUNC, :AUX_DATA, :TIME)´);

    ParamByName(´COD_ACESSO´).AsInteger := COD_ACESSO;
    ParamByName(´COD_FUNC´).AsInteger := sqlQuery1.FieldByName(´COD_FUNC´).AsInteger;
    ParamByName(´AUX_DATA´).AsDateTime := Aux_Data;
    ParamByName(´TIME´).AsTime := Time;

    try
      sqlQuery2.ExecSQL;
    except on E:Exception do
      MessageDlg(´Ocorreu um erro ao inserir os dados.´ + #13 +
        E.Message, [mbOk], 0);
    end;
  end;
end;


Use parâmetros que fica mais legível e tranquilo de programar.
Abs


GOSTEI 0
POSTAR