Fórum Erro ao gravar no MySQL #431078

15/12/2012

0

O que é esse erro:

Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito

Utilizo ADO com MySQL

O código é esse:

  if Length(Trim(EdtNome.Text)) <= 0 then
  begin
    EdtNome.SetFocus;
    Application.MessageBox(pChar(''Digite o nome!''), ''Erro'', MB_ICONERROR + MB_OK);
    Exit;
  end;

  try
    with DmGeral.IboQryInsere do
    begin
      Close;
      SQL.Clear;
      if bInserir then
      begin
        SQL.Text := ''INSERT INTO clientes '' +
                    ''(CLI_CODIGO, CLI_NOME, CLI_DATA_CAD, CLI_DATA_NASC, CLI_ENDERECO, CLI_COMPLEMENTO, CLI_BAIRRO, CLI_CIDADE, CLI_CEP, CLI_EMAIL, CLI_TEL_RES, CLI_TEL_COM, CLI_TEL_CEL, CLI_CPF_CNPJ, CLI_RG_IE, CLI_CONTATO, CLI_TIPO, CLI_USUARIO, CLI_ULTIMA_ALTERACAO) '' +
                    ''VALUES '' +
                    ''(:CLI_CODIGO, :CLI_NOME, :CLI_DATA_CAD, :CLI_DATA_NASC, :CLI_ENDERECO, :CLI_COMPLEMENTO, :CLI_BAIRRO, :CLI_CIDADE, :CLI_CEP, :CLI_EMAIL, :CLI_TEL_RES, :CLI_TEL_COM, :CLI_TEL_CEL, :CLI_CPF_CNPJ, '' +
                    '':CLI_RG_IE, :CLI_CONTATO, :CLI_TIPO, :CLI_USUARIO, :CLI_ULTIMA_ALTERACAO) '';
      end
      else
      begin
        SQL.Text := ''UPDATE clientes SET CLI_NOME =:CLI_NOME, CLI_DATA_CAD =:CLI_DATA_CAD, CLI_DATA_NASC =:CLI_DATA_NASC, CLI_ENDERECO =:CLI_ENDERECO, '' +
                    '' CLI_COMPLEMENTO =:CLI_COMPLEMENTO, CLI_BAIRRO =:CLI_BAIRRO, CLI_CIDADE =:CLI_CIDADE, CLI_CEP =:CLI_CEP, '' +
                    '' CLI_EMAIL =:CLI_EMAIL, CLI_TEL_RES =:CLI_TEL_RES, CLI_TEL_COM =:CLI_TEL_COM, CLI_TEL_CEL =:CLI_TEL_CEL, '' +
                    '' CLI_CPF_CNPJ =:CLI_CPF_CNPJ, CLI_RG_IE =:CLI_RG_IE, CLI_CONTATO =:CLI_CONTATO, CLI_TIPO =:CLI_TIPO, '' +
                    '' CLI_USUARIO =:CLI_USUARIO, CLI_ULTIMA_ALTERACAO =:CLI_ULTIMA_ALTERACAO WHERE CLI_CODIGO =:CLI_CODIGO'';
      end;
      Parameters.ParamByName(''CLI_CODIGO'').Value := iCli_codigo;
      Parameters.ParamByName(''CLI_NOME'').Value := EdtNome.Text;
      Parameters.ParamByName(''CLI_DATA_CAD'').Value := FormatDateTime(''yyyy-mm-dd'',dCli_data_cad);
      try
        Parameters.ParamByName(''CLI_DATA_NASC'').Value := FormatDateTime(''yyyy-mm-dd'',StrToDate(EdtData_nasc.Text));
      except
      end;
      Parameters.ParamByName(''CLI_ENDERECO'').Value := EdtEndereco.Text;
      Parameters.ParamByName(''CLI_COMPLEMENTO'').Value := EdtComplemento.Text;
      Parameters.ParamByName(''CLI_BAIRRO'').Value := EdtBairro.Text;
      Parameters.ParamByName(''CLI_CIDADE'').Value := EdtCidade.Text;
      Parameters.ParamByName(''CLI_CEP'').Value := EdtCep.Text;
      Parameters.ParamByName(''CLI_EMAIL'').Value := EdtEmail.Text;
      Parameters.ParamByName(''CLI_TEL_RES'').Value := EdtTel_res.Text;
      Parameters.ParamByName(''CLI_TEL_COM'').Value := EdtTel_com.Text;
      Parameters.ParamByName(''CLI_TEL_CEL'').Value := EdtTel_cel.Text;
      Parameters.ParamByName(''CLI_CPF_CNPJ'').Value := EdtCpf_cnpj.Text;
      Parameters.ParamByName(''CLI_RG_IE'').Value := EdtRg_ie.Text;
      Parameters.ParamByName(''CLI_CONTATO'').Value := EdtContato.Text;
      Parameters.ParamByName(''CLI_TIPO'').Value := sTipo;
      Parameters.ParamByName(''CLI_USUARIO'').Value := iId_usuario;
      Parameters.ParamByName(''CLI_ULTIMA_ALTERACAO'').Value := FormatDateTime(''yyyy-mm-dd'',Date);
      ExecSQL;
    end;
  except
    on E : Exception do
      Application.MessageBox(pChar(E.message),''Erro'',MB_ICONINFORMATION+MB_OK);
  end;
  Application.MessageBox(pChar(''Operação realizada com sucesso!''), ''Informação'', MB_ICONINFORMATION + MB_OK);
  if not bInserir then
    ModalResult := mrOk
  else
    BtCancelar.Click;
Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

15/12/2012

Frederico Brigatte***

O que é esse erro:

Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito

Utilizo ADO com MySQL

O código é esse:

  if Length(Trim(EdtNome.Text)) <= 0 then
  begin
    EdtNome.SetFocus;
    Application.MessageBox(pChar(''Digite o nome!''), ''Erro'', MB_ICONERROR + MB_OK);
    Exit;
  end;

  try
    with DmGeral.IboQryInsere do
    begin
      Close;
      SQL.Clear;
      if bInserir then
      begin
        SQL.Text := ''INSERT INTO clientes '' +
                    ''(CLI_CODIGO, CLI_NOME, CLI_DATA_CAD, CLI_DATA_NASC, CLI_ENDERECO, CLI_COMPLEMENTO, CLI_BAIRRO, CLI_CIDADE, CLI_CEP, CLI_EMAIL, CLI_TEL_RES, CLI_TEL_COM, CLI_TEL_CEL, CLI_CPF_CNPJ, CLI_RG_IE, CLI_CONTATO, CLI_TIPO, CLI_USUARIO, CLI_ULTIMA_ALTERACAO) '' +
                    ''VALUES '' +
                    ''(:CLI_CODIGO, :CLI_NOME, :CLI_DATA_CAD, :CLI_DATA_NASC, :CLI_ENDERECO, :CLI_COMPLEMENTO, :CLI_BAIRRO, :CLI_CIDADE, :CLI_CEP, :CLI_EMAIL, :CLI_TEL_RES, :CLI_TEL_COM, :CLI_TEL_CEL, :CLI_CPF_CNPJ, '' +
                    '':CLI_RG_IE, :CLI_CONTATO, :CLI_TIPO, :CLI_USUARIO, :CLI_ULTIMA_ALTERACAO) '';
      end
      else
      begin
        SQL.Text := ''UPDATE clientes SET CLI_NOME =:CLI_NOME, CLI_DATA_CAD =:CLI_DATA_CAD, CLI_DATA_NASC =:CLI_DATA_NASC, CLI_ENDERECO =:CLI_ENDERECO, '' +
                    '' CLI_COMPLEMENTO =:CLI_COMPLEMENTO, CLI_BAIRRO =:CLI_BAIRRO, CLI_CIDADE =:CLI_CIDADE, CLI_CEP =:CLI_CEP, '' +
                    '' CLI_EMAIL =:CLI_EMAIL, CLI_TEL_RES =:CLI_TEL_RES, CLI_TEL_COM =:CLI_TEL_COM, CLI_TEL_CEL =:CLI_TEL_CEL, '' +
                    '' CLI_CPF_CNPJ =:CLI_CPF_CNPJ, CLI_RG_IE =:CLI_RG_IE, CLI_CONTATO =:CLI_CONTATO, CLI_TIPO =:CLI_TIPO, '' +
                    '' CLI_USUARIO =:CLI_USUARIO, CLI_ULTIMA_ALTERACAO =:CLI_ULTIMA_ALTERACAO WHERE CLI_CODIGO =:CLI_CODIGO'';
      end;
      Parameters.ParamByName(''CLI_CODIGO'').Value := iCli_codigo;
      Parameters.ParamByName(''CLI_NOME'').Value := EdtNome.Text;
      Parameters.ParamByName(''CLI_DATA_CAD'').Value := FormatDateTime(''yyyy-mm-dd'',dCli_data_cad);
      try
        Parameters.ParamByName(''CLI_DATA_NASC'').Value := FormatDateTime(''yyyy-mm-dd'',StrToDate(EdtData_nasc.Text));
      except
      end;
      Parameters.ParamByName(''CLI_ENDERECO'').Value := EdtEndereco.Text;
      Parameters.ParamByName(''CLI_COMPLEMENTO'').Value := EdtComplemento.Text;
      Parameters.ParamByName(''CLI_BAIRRO'').Value := EdtBairro.Text;
      Parameters.ParamByName(''CLI_CIDADE'').Value := EdtCidade.Text;
      Parameters.ParamByName(''CLI_CEP'').Value := EdtCep.Text;
      Parameters.ParamByName(''CLI_EMAIL'').Value := EdtEmail.Text;
      Parameters.ParamByName(''CLI_TEL_RES'').Value := EdtTel_res.Text;
      Parameters.ParamByName(''CLI_TEL_COM'').Value := EdtTel_com.Text;
      Parameters.ParamByName(''CLI_TEL_CEL'').Value := EdtTel_cel.Text;
      Parameters.ParamByName(''CLI_CPF_CNPJ'').Value := EdtCpf_cnpj.Text;
      Parameters.ParamByName(''CLI_RG_IE'').Value := EdtRg_ie.Text;
      Parameters.ParamByName(''CLI_CONTATO'').Value := EdtContato.Text;
      Parameters.ParamByName(''CLI_TIPO'').Value := sTipo;
      Parameters.ParamByName(''CLI_USUARIO'').Value := iId_usuario;
      Parameters.ParamByName(''CLI_ULTIMA_ALTERACAO'').Value := FormatDateTime(''yyyy-mm-dd'',Date);
      ExecSQL;
    end;
  except
    on E : Exception do
      Application.MessageBox(pChar(E.message),''Erro'',MB_ICONINFORMATION+MB_OK);
  end;
  Application.MessageBox(pChar(''Operação realizada com sucesso!''), ''Informação'', MB_ICONINFORMATION + MB_OK);
  if not bInserir then
    ModalResult := mrOk
  else
    BtCancelar.Click;


Compilei o projeto e rodei fora do Delphi e funcionou, pq dá o erro se rodo pelo Delphi?
Responder

Gostei + 0

15/12/2012

Claudia Nogueira

Por que não é um erro, é uma exceção.
O Delphi vem por padrão para parar quando ocorrer uma.
Como o campo da data de nascimento está em branco, na hora de converter dá a exceção em tempo de projeto, e como depois do exception não tem nenhum tratamento, fora fora do Delphi não dá nenhuma mensagem mesmo.
Toda vez que usar um try except e não tiver tratamento pra exceção vai dar a mensagem de alerta em tempo de projeto. Nesse seu caso está correto, pois é pra continuar gravando mesmo com a data em branco, pois não é uma campo obrigatório.
Responder

Gostei + 0

17/12/2012

Frederico Brigatte***

Oi Cláudia. Vc apareceu, rs. Como faço para não mostrar isso, está atrapalhando qdo rodo em tempo de projeto. O seu email mudou?
Responder

Gostei + 0

17/12/2012

Frederico Brigatte***

Quando vou gravar, eu digito a data de nascimento, não estou gravando em branco não. Além disso, eu precisava gravar somente o mês e o ano nesse formato: mm/aaaa, tem como?
Responder

Gostei + 0

17/12/2012

Claudia Nogueira

Pra você gravar somente mm/aaaa você tem que mudar o tipo do campo pra varchar, e depois usar o FormatDateTime.

Exemplo: FormatDateTime('mm/yyyy',StrToDate(EdtDataNascimento.Text));

Tem que ver o que realmente você precisa. Eu costumo gravar a data inteira, mas eu não uso o Edit pra isso, eu uso outros componentes que já tratam a data.
Responder

Gostei + 0

17/12/2012

Frederico Brigatte***

Preciso mesmo gravar mm/aaaa. Como posso falar com vc por email?
Responder

Gostei + 0

17/12/2012

Frederico Brigatte***

Tem como deixar máscara para os campos data no formato mm/aaaa, cpf/cnpj, rg ou ie?
Responder

Gostei + 0

17/12/2012

Frederico Brigatte***

Para dar continuidade no projeto, é só seguir como está?
Responder

Gostei + 0

17/12/2012

Claudia Nogueira

Aí tem que usar o MaskEdit.
O EditMask para o cpf é ###.###.###-##;1;_ para cnpj é ##.###.###/####-##;1;_ pra aquele outro tipo de mm/aaaa fica ##/####;1;_.

E assim por diante.
Não é de costume colocar máscara em campo de RG e inscrição estadual, pois não tem um padrão 100%.
Responder

Gostei + 0

17/12/2012

Frederico Brigatte***

Então é melhor tirar para rg e ie? Eu coloquei. Para dar continuidade é só seguir como foi feito?
Responder

Gostei + 0

18/12/2012

Frederico Brigatte***

Para bloquear novos menus, como que faço?
Responder

Gostei + 0

18/12/2012

Frederico Brigatte***

Como poderia fazer a tabela Comanda e Itens_Comanda? Da uma ajuda ai, por favor, Claudia.
Responder

Gostei + 0

18/12/2012

Frederico Brigatte***

Claudia, qdo gravo a comanda e itens comanda, já grava também na tabela pagamentos? Como posso fazer isso? Vou fazer essa parte agora. Os campos por enquanto não importam, quero a teoria.
Responder

Gostei + 0

18/12/2012

Frederico Brigatte***

Claudia,

Como faço relacionamento em tabelas no MySql? Vou fazer as tabelas Comanda e Itens_Comanda e estou precisando de uma ajudinha.

COMANDA:

Com_ID
Com_DATA
VEI_CODIGO (Aqui não sei se coloco também o código do cliente)
Com_USUARIO
Com_FORMA_PAGAMENTO

ITENS_COMANDA:

Com_ID
SER_CODIGO
Ite_PRECO_UNITARIO
Ite_QTDE
Ite_TOTAL

Assim está bom? O que vc recomenda? Da uma sugestão. Como relaciono as tabelas?
Responder

Gostei + 0

19/12/2012

Frederico Brigatte***

Claudia,

Eu acrescentei uma opção no menu, como faço para aparecer no acesso para bloquear ou liberar? Não to conseguindo fazer isso.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar