Fórum Erro ao gravar no MySQL #431078
15/12/2012
0
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***
Curtir tópico
+ 0Posts
15/12/2012
Frederico Brigatte***
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
15/12/2012
Claudia Nogueira
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
17/12/2012
Frederico Brigatte***
Gostei + 0
17/12/2012
Frederico Brigatte***
Gostei + 0
17/12/2012
Claudia Nogueira
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
17/12/2012
Frederico Brigatte***
Gostei + 0
17/12/2012
Frederico Brigatte***
Gostei + 0
17/12/2012
Frederico Brigatte***
Gostei + 0
17/12/2012
Claudia Nogueira
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
17/12/2012
Frederico Brigatte***
Gostei + 0
18/12/2012
Frederico Brigatte***
Gostei + 0
18/12/2012
Frederico Brigatte***
Gostei + 0
18/12/2012
Frederico Brigatte***
Gostei + 0
18/12/2012
Frederico Brigatte***
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
19/12/2012
Frederico Brigatte***
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
Clique aqui para fazer login e interagir na Comunidade :)