Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 3671 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom Dia pessoal do Forum!

 

Estou no processo do meu tcc e empaquei numa parte... :(

 

É um Software para Granjas e estou na parte de cadastro, tenho alguns botões de novo, excluir, incluir e editar!

 

Alguns campos para preencher e depois de preenchido quando for clicar no botão incluir é para incluir no DBGrid! Só que quando clico no Incluir ele dá um erro!

 

Project tcc.exe raised exception class EConvertError with message ''' is not a valid integer value'. Process stopped. Use Step or Run to Continue.

 

Após isso, quando clico no botão ok, uma linha azul vai para o dpr e marca a linha do Application.Run

 

No banco de dados está as seguintes informações desse cadastro de Lotes:

 

CODLOTES       - INTEGER

LOTE                 - NCHAR(80)

LINHAGEM         - NCHAR(20)

NUMERO           - INTEGER

DATAALOJA      - DATE

INICIOSEM         - DATE

SEXO                - CHAR(10)

TOTALFEM      - INTEGER

PRECOFEM     - INTEGER

TOTALMAC      - INTEGER

PRECOMACH   - INTEGER

TIPORACAO     - NCHAR(20)

 

Vou postar também o código que está dentro do botão incluir:

var sSql : String;
begin
    sSql := 'INSERT INTO LOTES' +
            ' (CODLOTES, LOTE, LINHAGEM, NUMERO, DATAALOJAMENTO, INICIOSEMANA,SEXO, TOTALFEMEA, PRECOFEMEA, TOTALMACHO, PRECOMACHO, TIPORACAO)' +
            'VALUES (:CODLOTES, :LOTE, :LINHAGEM, :NUMERO, :DATAALOJAMENTO, :INICIOSEMANA, :SEXO, :TOTALFEMEA, :PRECOFEMEA, :TOTALMACHO, :PRECOMACHO, :TIPORACAO) ';

    with ADOQueryL do
    begin
      Close;      //Fecha a conexão
      Sql.Clear;  //Limpa a query
      Sql.Add(sSql);
      Parameters.ParamByName('CODLOTES').Value       := StrToInt(L_CODIGO.Text);
      Parameters.ParamByName('LOTE').Value           := quotedstr(L_LOTE.Text);
      Parameters.ParamByName('LINHAGEM').Value       := quotedstr(L_LINHAGEM.Text);
      Parameters.ParamByName('NUMERO').Value         := StrToInt(L_NUMERO.Text);
      Parameters.ParamByName('DATAALOJAMENTO').Value := quotedstr(L_DATAALOJ.Text);
      Parameters.ParamByName('INICIOSEMANA').Value   := quotedstr(L_INICIOSEM.Text);
      Parameters.ParamByName('SEXO').Value           := quotedstr(L_SEXO.Text);
      Parameters.ParamByName('TOTALFEMEA').Value     := L_TOTALFEMEA.Value;
      Parameters.ParamByName('PRECOFEMEA').Value     := L_PRECOFEMEA.Value;
      Parameters.ParamByName('TOTALMACHO').Value     := L_TOTALMACHO.Value;
      Parameters.ParamByName('PRECOMACHO').Value     := L_PRECOMACHO.Value;
      Parameters.ParamByName('TIPORACAO').Value      := quotedstr(L_TIPORACAO.Text);

        acaoNovo.enabled := True;
        acaoEditar.Enabled := True;
        acaoIncluir.Enabled := false;
        acaoExcluir.Enabled := True;
      try
         ExecSQL;
      except
         On E:Exception do
         begin
            ShowMessage('Erro na atualização da base de dados. Erro: ' + E.Message);
         end;
      end;//try except
    end;  //with ADOQueryL
end;

Espero que possam me ajudar de alguma forma :/ Já não sei mais onde recorrer! 

 

E falta apenas 1 mes para a entrega x.x

 

Obrigada.

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia de cara já diria que seu problema está na criação da tabela

pelo que me parece você tem campos para guardar valores monetários e está informando os mesmos como inteiro

 

CODLOTES       - INTEGER

LOTE                 - NCHAR(80)

LINHAGEM         - NCHAR(20)

NUMERO           - INTEGER

DATAALOJA      - DATE

INICIOSEM         - DATE

SEXO                - CHAR(10)

TOTALFEM      - INTEGER

PRECOFEM     - INTEGER

TOTALMAC      - INTEGER

PRECOMACH   - INTEGER

TIPORACAO     - NCHAR(20)

 

Ao passar por parâmetro os dados ele devem de estar indo com ponto pois deve de ser 1.00 

dai dará problema!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Tente alterar os campos para float e verifique se nenhum deles esta sinalizado como preenchimento obrigatório mas ao clicar no botão gravar não recebe um valor.

 

TOTALFEM      - INTEGER

PRECOFEM     - INTEGER

TOTALMAC      - INTEGER

PRECOMACH   - INTEGER

NUMERO           - INTEGER

CODLOTES       - INTEGER

Link para o comentário
Compartilhar em outros sites

Certo, mas aí nas linhas de código não teria que alterar alguma coisa? Pelo fato de eu ter mudado para Float?

 

Mudei aqui para Float no banco de dados... Mas parece estar dando erro do mesmo jeito... x.x

 

Quando clico no botão ok, ele vai direto para a DPR, no Application.Run;

Editado por DaniBS01
Link para o comentário
Compartilhar em outros sites

Fiz essa mudança... Executei, preenchi os campos, agora da outro erro:

 

Project tcc.exe raised exception class EOleException with message 'Cannot insert explicit value for identify column in table 'Lotes' when IDENTITY_INSERT is set to OFF'. Use Step or Run to continue.

 

E dps desse erro ele cria uma linha azul no ExecSQL;

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Hãm  :???:

with ADOQuery do
begin
  close;
  parameters.params[0].asinteger := 1;
  parameters.params[1].asfloat := 1.36;
  parameters.params[2].asstring := minhavariavelstring;
  execsql;
end;

talvez isso lhe ajude

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Hãm  :???:

with ADOQuery do
begin
  close;
  parameters.params[0].asinteger := 1;
  parameters.params[0].asfloat := 1.36;
  parameters.params[0].asstring := minhavariavelstring;
  execsql;
end;

talvez isso lhe ajude

 

AsFloat não dá, dá erro... "Undeclared identifier: 'AsFloat'

Link para o comentário
Compartilhar em outros sites

  • Moderadores
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

cara não sou programador delphi, mas o erro ta claro pela a execeção.

 

'Cannot insert explicit value for identify column in table 'Lotes' when IDENTITY_INSERT is set to OFF

Traduzindo em miudo você esta setando um campo Identify, ou seja um campo com auto-incremento e o banco de dados não esta permitindo pois você não habilitou esta opção. em suma tenta não enviar o campo "CODLOTES" so o resto que provavelmente vai funcionar.

 

Link para o comentário
Compartilhar em outros sites

cara não sou programador delphi, mas o erro ta claro pela a execeção.

Traduzindo em miudo você esta setando um campo Identify, ou seja um campo com auto-incremento e o banco de dados não esta permitindo pois você não habilitou esta opção. em suma tenta não enviar o campo "CODLOTES" so o resto que provavelmente vai funcionar.

 

 

Eh fiz, isso, tirei o COLOTES do INSERT, esse erro não dá mais, agora da outro KK

Link para o comentário
Compartilhar em outros sites

Preencho todos os campos, clico em inserir e da o seguinte erro

 

project tcc.exe raised exception clas EOleException with message 'Conversion failed when converting date/or time from character string'. Process stopped. Use step or run to continue.

 

Clico em ok e vai pro ExecSql; e Application.Run; da dpr

 

É gente, eu acho que vou precisar de umas aulas só de erros rs :mad:

Editado por DaniBS01
Link para o comentário
Compartilhar em outros sites

Esse erro agora é da conversão de string para data nesses dois:

 

Parameters.ParamByName('DATAALOJAMENTO').Value := quotedstr(L_DATAALOJ.Text);
Parameters.ParamByName('INICIOSEMANA').Value := quotedstr(L_INICIOSEM.Text);

 

da uma pesquisada ai que você arruma fácil.

 

Eu uso strtodate no mysql.

Link para o comentário
Compartilhar em outros sites

Esse erro agora é da conversão de string para data nesses dois:

 

Parameters.ParamByName('DATAALOJAMENTO').Value := quotedstr(L_DATAALOJ.Text);

Parameters.ParamByName('INICIOSEMANA').Value := quotedstr(L_INICIOSEM.Text);

 

da uma pesquisada ai que você arruma fácil.

 

Eu uso strtodate no mysql.

 

Eh, eu tbm usei o strtodate / strtodatetime ... mas o erro prossegue...

 

O erro chega aqui agora

try
         ExecSQL;

E esse erro continua

 

project tcc.exe raised exception clas EOleException with message 'Conversion failed when converting date/or time from character string'. Process stopped. Use step or run to continue.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Gostaria de estar indicando fóruns sobre desenvolvimento delphi para iniciantes, se efetuar uma breve pesquisa irá achar todos os caminhos para iniciar

 

http://www.activedelphi.com.br/forum/viewforum.php?f=1

http://forum.devmedia.com.br/viewforum.php?f=1

http://forum.imasters.com.br/forum/72-delphi/

http://forum.clubedohardware.com.br/forum/178-pascaldelphi/

http://www.dicasdelphi.com.br/forum/

 

e sobre seu problema de conversão de data , tem que informar a data no formato que o seu banco está configurado e não no formato que você acha que deve de fazer

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3671 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.