Inserir data no sql com delphi
boa tarde
A/C Rodrigo carreiro mourão
Ola Rodrigo tudo bem , estou de volta
mais facil que esse chamado aqui nem tem como
como eu faço para inserir data no delphi , estou te mandando o fonte do meu componente proc que estou usando em uma tela de cadastros
proc_CadMotoqueiro.Params[0].AsInteger := StrToInt(edtMatricula.Text);
proc_CadMotoqueiro.Params[1].AsString := edtMotoqueiro.Text;
proc_CadMotoqueiro.Params[2].AsInteger := StrToInt(edtidTurno.Text);
proc_CadMotoqueiro.Params[3].AsInteger := StrToInt(edtidlogradouro.Text);
proc_CadMotoqueiro.Params[4].AsString := edtNumero.Text;
proc_CadMotoqueiro.Params[5].AsString := edtComplemento.Text;
proc_CadMotoqueiro.Params[6].AsInteger := StrToInt(edtidBairro.Text);
proc_CadMotoqueiro.Params[7].AsString := edtCep.Text;
proc_CadMotoqueiro.Params[8].AsInteger := StrToInt(edtidcidade.Text);
proc_CadMotoqueiro.Params[9].AsString := edtLocalNascimento.Text;
proc_CadMotoqueiro.Params[10].AsString := edtUF.Text;
proc_CadMotoqueiro.Params[11].AsString := edtTelefone.Text;
proc_CadMotoqueiro.Params[12].AsString := FormatDateTime('yyyy/mm/dd ,dtpDataNascimento.Date);
proc_CadMotoqueiro.Params[13].AsString := edtpai.Text;
proc_CadMotoqueiro.Params[14].AsString := edtmae.Text;
proc_CadMotoqueiro.Params[15].AsString := edtCategoriaCnh.Text;
proc_CadMotoqueiro.Params[16].AsInteger := 1; //id do usuario
proc_CadMotoqueiro.Params[17].AsString := edtEmail.Text;
proc_CadMotoqueiro.Params[18].AsInteger := StrToInt(edtLimiteDebito.Text);
proc_CadMotoqueiro.Params[19].AsString := edtCnh.Text;
// proc_CadMotoqueiro.Params[20].AsDateTime := StrToDateTime(edtValidadeCnh.Text);
proc_CadMotoqueiro.Params[21].AsString := edtColete.Text;
proc_CadMotoqueiro.Params[22].AsString := edtCelular.Text;
proc_CadMotoqueiro.Params[23].AsInteger := StrToInt(edtidEstadocivil.Text);
proc_CadMotoqueiro.Params[24].asstring := edtPlaca.Text;
proc_CadMotoqueiro.Params[25].AsInteger := StrToInt(edtidCategoriaDiaria.Text);
proc_CadMotoqueiro.Params[26].AsInteger := StrToInt(edtidmodelo.Text);
proc_CadMotoqueiro.Params[27].AsInteger := StrToInt(edtidcor.Text);
proc_CadMotoqueiro.Params[28].AsInteger := StrToInt(edtidConservacao.Text);
proc_CadMotoqueiro.Params[29].AsInteger := StrToInt(edtiddocumentos.Text);
proc_CadMotoqueiro.Params[30].AsInteger := StrToInt(edtIdveiculoMunicipio.Text);
proc_CadMotoqueiro.Params[31].AsInteger := StrToInt(edtidlocalnascimento.Text);
proc_CadMotoqueiro.Params[32].AsString := edtCPF.Text;
proc_CadMotoqueiro.Params[33].AsString := edtIdentidade.Text;
proc_CadMotoqueiro.Params[34].AsString := edtrgEmissor.Text;
// proc_CadMotoqueiro.Params[35].AsDateTime := StrToDateTime(edtrgDataexpedicao.Text);
proc_CadMotoqueiro.Params[36].AsString := edtAno.Text;
proc_CadMotoqueiro.ExecProc;
ShowMessage('Motoqueiro cadastrado com sucesso !'); O erro aparece sempre no componente que precisa inserir uma data no banco ex data de nascimento e etc Qual o melhor componente para se usar nesse caso ? Vc poderia montar um exemplo para mim ? abs
proc_CadMotoqueiro.Params[1].AsString := edtMotoqueiro.Text;
proc_CadMotoqueiro.Params[2].AsInteger := StrToInt(edtidTurno.Text);
proc_CadMotoqueiro.Params[3].AsInteger := StrToInt(edtidlogradouro.Text);
proc_CadMotoqueiro.Params[4].AsString := edtNumero.Text;
proc_CadMotoqueiro.Params[5].AsString := edtComplemento.Text;
proc_CadMotoqueiro.Params[6].AsInteger := StrToInt(edtidBairro.Text);
proc_CadMotoqueiro.Params[7].AsString := edtCep.Text;
proc_CadMotoqueiro.Params[8].AsInteger := StrToInt(edtidcidade.Text);
proc_CadMotoqueiro.Params[9].AsString := edtLocalNascimento.Text;
proc_CadMotoqueiro.Params[10].AsString := edtUF.Text;
proc_CadMotoqueiro.Params[11].AsString := edtTelefone.Text;
proc_CadMotoqueiro.Params[12].AsString := FormatDateTime('yyyy/mm/dd ,dtpDataNascimento.Date);
proc_CadMotoqueiro.Params[13].AsString := edtpai.Text;
proc_CadMotoqueiro.Params[14].AsString := edtmae.Text;
proc_CadMotoqueiro.Params[15].AsString := edtCategoriaCnh.Text;
proc_CadMotoqueiro.Params[16].AsInteger := 1; //id do usuario
proc_CadMotoqueiro.Params[17].AsString := edtEmail.Text;
proc_CadMotoqueiro.Params[18].AsInteger := StrToInt(edtLimiteDebito.Text);
proc_CadMotoqueiro.Params[19].AsString := edtCnh.Text;
// proc_CadMotoqueiro.Params[20].AsDateTime := StrToDateTime(edtValidadeCnh.Text);
proc_CadMotoqueiro.Params[21].AsString := edtColete.Text;
proc_CadMotoqueiro.Params[22].AsString := edtCelular.Text;
proc_CadMotoqueiro.Params[23].AsInteger := StrToInt(edtidEstadocivil.Text);
proc_CadMotoqueiro.Params[24].asstring := edtPlaca.Text;
proc_CadMotoqueiro.Params[25].AsInteger := StrToInt(edtidCategoriaDiaria.Text);
proc_CadMotoqueiro.Params[26].AsInteger := StrToInt(edtidmodelo.Text);
proc_CadMotoqueiro.Params[27].AsInteger := StrToInt(edtidcor.Text);
proc_CadMotoqueiro.Params[28].AsInteger := StrToInt(edtidConservacao.Text);
proc_CadMotoqueiro.Params[29].AsInteger := StrToInt(edtiddocumentos.Text);
proc_CadMotoqueiro.Params[30].AsInteger := StrToInt(edtIdveiculoMunicipio.Text);
proc_CadMotoqueiro.Params[31].AsInteger := StrToInt(edtidlocalnascimento.Text);
proc_CadMotoqueiro.Params[32].AsString := edtCPF.Text;
proc_CadMotoqueiro.Params[33].AsString := edtIdentidade.Text;
proc_CadMotoqueiro.Params[34].AsString := edtrgEmissor.Text;
// proc_CadMotoqueiro.Params[35].AsDateTime := StrToDateTime(edtrgDataexpedicao.Text);
proc_CadMotoqueiro.Params[36].AsString := edtAno.Text;
proc_CadMotoqueiro.ExecProc;
ShowMessage('Motoqueiro cadastrado com sucesso !'); O erro aparece sempre no componente que precisa inserir uma data no banco ex data de nascimento e etc Qual o melhor componente para se usar nesse caso ? Vc poderia montar um exemplo para mim ? abs
Carlos Faria
Curtidas 0
Respostas
Wesley Yamazack
14/04/2009
Olá Carlos,
Existe diversas formas de se inserir datas no Delphi.
Ex :
1 - proc_CadMotoqueiro.Params[12].AsDate := dtpDataNascimento.Date;
2 - proc_CadMotoqueiro.Params[12].AsString := FormatDateTime('yyyy/mm/dd' ,dtpDataNascimento.Date); ( este aqui é onde esta teu problema, você não colocou o ultimo " ' " >>> 'yyyy/mm/dd'
Mas antes disso, qual é o banco de dados ? Qual é o formato de data do mesmo?
dd/mm/yyyy ? yyyy-mm-dd? Você no FormatDateTime tem que passar o formato que seu banco suporta.
Quanto ao melhor componente, o bom seria você usar o DateTimePicker, acho que você esta usando o mesmo, já!
Att,
Wesley Y
Existe diversas formas de se inserir datas no Delphi.
Ex :
1 - proc_CadMotoqueiro.Params[12].AsDate := dtpDataNascimento.Date;
2 - proc_CadMotoqueiro.Params[12].AsString := FormatDateTime('yyyy/mm/dd' ,dtpDataNascimento.Date); ( este aqui é onde esta teu problema, você não colocou o ultimo " ' " >>> 'yyyy/mm/dd'
Mas antes disso, qual é o banco de dados ? Qual é o formato de data do mesmo?
dd/mm/yyyy ? yyyy-mm-dd? Você no FormatDateTime tem que passar o formato que seu banco suporta.
Quanto ao melhor componente, o bom seria você usar o DateTimePicker, acho que você esta usando o mesmo, já!
Att,
Wesley Y
GOSTEI 0
Carlos Faria
14/04/2009
Ola wesley funcionou com datetimepicutre
parametro (x).asdate := componentedatetime.data ; porem ficou meio estranho formulario pois ao abrir o mesmo ele ja vem com uma data por default ,acho que no meu caso aqui seria mesmo usar o mask edti ou em edit mesmo
meu banco e sqlserver 2005 developer edition e meu formato de data e yyyy/mm/dd
voce poderima me mostra um exemplo de como fazer ?
GOSTEI 0
Wesley Yamazack
14/04/2009
Olá Carlos,
Vamos lá.
1 - Coloque um maskedit no teu formulário, na propriedade EdtMask coloque o seguinte . !99/99/9999;1;_
2 - Seguinte agora, na hora de salvar, vai ficar meio complexo mas é tranquilo;
- proc_CadMotoqueiro.Params[12].AsString := Copy(MaskEdit1.Text, 7,4) + '/' + Copy(MaskEdit1.Text, 4,2) + '/' + Copy(MaskEdit1.Text, 1,2);
3 - Motivo pelo qual estou usando o Copy, você na hora de digitar os dados geralmente digitamos, DD/MM/YYYY, para os usuários fica mais facil, agora no nosso programa nos devemos tratar para poder mandar para nosso banco de dados, usando o Copy(yyyy), Copy(mm), Copy(DD)
4 - Exemplo , se informarmos no MaskEdit 15/04/2009, o que será gravado no banco será 2009/04/15.
Espero que ajude.
Att,
Wesley Y
Vamos lá.
1 - Coloque um maskedit no teu formulário, na propriedade EdtMask coloque o seguinte . !99/99/9999;1;_
2 - Seguinte agora, na hora de salvar, vai ficar meio complexo mas é tranquilo;
- proc_CadMotoqueiro.Params[12].AsString := Copy(MaskEdit1.Text, 7,4) + '/' + Copy(MaskEdit1.Text, 4,2) + '/' + Copy(MaskEdit1.Text, 1,2);
3 - Motivo pelo qual estou usando o Copy, você na hora de digitar os dados geralmente digitamos, DD/MM/YYYY, para os usuários fica mais facil, agora no nosso programa nos devemos tratar para poder mandar para nosso banco de dados, usando o Copy(yyyy), Copy(mm), Copy(DD)
4 - Exemplo , se informarmos no MaskEdit 15/04/2009, o que será gravado no banco será 2009/04/15.
Espero que ajude.
Att,
Wesley Y
GOSTEI 0
Carlos Faria
14/04/2009
Olá Wesley
fiz como vc mostrou no exemplo esta dando um erro na hora de gravar
could not parse sql timestamp string
GOSTEI 0
Wesley Yamazack
14/04/2009
Olá Carlos,
Vamos primeiro por partes.
1 - Mude para datetime no lugar de timestamp no SQLServer
2 - Params[12].Value := StrToDatetime(MaskEdt1.text)
Att,
Wesley Y
Vamos primeiro por partes.
1 - Mude para datetime no lugar de timestamp no SQLServer
2 - Params[12].Value := StrToDatetime(MaskEdt1.text)
Att,
Wesley Y
GOSTEI 0
Carlos Faria
14/04/2009
Olá wesley
agora sim deu tudo certo com uma unica linha de codigo
proc_CadMotoqueiro.Params[12].Value :=StrToDateTime(mskdataaniversario.Text);
simplesmento eu configurei o mask como vc me disse e acrescentei isso ai !!
E isso mesmo ?
Somente isso ?
Se for pode fechar o chamado amigo !
GOSTEI 0
Wesley Yamazack
14/04/2009
Olá Carlos,
Não é como dizem por ai "se compilou funcionou, rsrsr", to brincando mas é isso mesmo, esta certinho.
Forte abraço amigo, espero poder ajudar em outros chamados.
Att,
Wesley Y
Não é como dizem por ai "se compilou funcionou, rsrsr", to brincando mas é isso mesmo, esta certinho.
Forte abraço amigo, espero poder ajudar em outros chamados.
Att,
Wesley Y
GOSTEI 0