Erro ao gravar no MySQL
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:
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***
Curtidas 0
Respostas
Frederico Brigatte***
15/12/2012
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:
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?
GOSTEI 0
Claudia Nogueira
15/12/2012
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.
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.
GOSTEI 0
Frederico Brigatte***
15/12/2012
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?
GOSTEI 0
Frederico Brigatte***
15/12/2012
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?
GOSTEI 0
Claudia Nogueira
15/12/2012
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.
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.
GOSTEI 0
Frederico Brigatte***
15/12/2012
Preciso mesmo gravar mm/aaaa. Como posso falar com vc por email?
GOSTEI 0
Frederico Brigatte***
15/12/2012
Tem como deixar máscara para os campos data no formato mm/aaaa, cpf/cnpj, rg ou ie?
GOSTEI 0
Frederico Brigatte***
15/12/2012
Para dar continuidade no projeto, é só seguir como está?
GOSTEI 0
Claudia Nogueira
15/12/2012
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%.
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%.
GOSTEI 0
Frederico Brigatte***
15/12/2012
Então é melhor tirar para rg e ie? Eu coloquei. Para dar continuidade é só seguir como foi feito?
GOSTEI 0
Frederico Brigatte***
15/12/2012
Para bloquear novos menus, como que faço?
GOSTEI 0
Frederico Brigatte***
15/12/2012
Como poderia fazer a tabela Comanda e Itens_Comanda? Da uma ajuda ai, por favor, Claudia.
GOSTEI 0
Frederico Brigatte***
15/12/2012
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.
GOSTEI 0
Frederico Brigatte***
15/12/2012
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?
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?
GOSTEI 0
Frederico Brigatte***
15/12/2012
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.
Eu acrescentei uma opção no menu, como faço para aparecer no acesso para bloquear ou liberar? Não to conseguindo fazer isso.
GOSTEI 0
William
15/12/2012
Colega Frederico por gentileza abra um novo tópico para essas dúvidas, assim fica mais fácil para outros integrantes poderem ajudar vc.
GOSTEI 0
Rafael Cunha
15/12/2012
Então é melhor tirar para rg e ie? Eu coloquei. Para dar continuidade é só seguir como foi feito?
No caso da RG e IE é melhor deixar sem a máscara como foi dito pela Claudia, por não existir um padrão definido.
GOSTEI 0
Frederico Brigatte***
15/12/2012
Ok, retirei a mascara para IE e RG. Gostaria que me ajudassem com a Comanda e Itens_Comanda.
GOSTEI 0