Gravar data atual no campo tipo date da tabela com firebird ibexpert
Bom dia a todos,
venho a tempo buscando uma solução para meu problema na internet,apesar de muitas dicas encontradas nenhuma deu certo para resolver meu problema.
Tenho um aplicativo que antes usava o banco como mysql mas decidi mudar para firebird embarcado devido a facilidade de instalação para o cliente na hora de distribuir.
mas infelizmente estou tendo problema na conversão de data na hora de salvar o registro.
tenho uma tabela com o campo data_chegada e outro campo Hora_chegada.No formulario da aplicação não uso textbox para isso,pois quer que salve o banco a data e hora atual quando salvar registro.mas estou obtendo erro "erro ao salvar:conversion erro from string ".
tenho outros campos data com datatimepickler no formulario e salva corretamente sem erro no banco,mas a data atual da esse erro informado.
Juro que ja vasculhei tudo e não consigo resolver.=(
segue o código para se alguma alma bondosa conseguir uma solução serei muitíssimo grato.
Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
If txtcdEncomenda.Text <> "" Then
'FORMATANDO DATA PARA FIREBIRD
Dim data As String
data = Now.ToString("yyyy/MM/dd")
Dim hora As String
hora = Now.ToString("yyyy/MM/dd hh:mm")
Try
'TRATAMENTO PARA IMAGEM DO TIPO IMAGE DIRETO DA PICKTURE BOX
Dim ms As New IO.MemoryStream
img.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim byteArray = ms.ToArray
'VERIFICAR SE A ENCOMENDA JÁ FOI ENTREGUE
Abrir()
Dim cmdCPF As FbCommand
Dim readerCPF As FbDataReader
Dim sqlCPF As String
sqlCPF = "SELECT * FROM CAD_ENTREGA where cdrastreio = '" & txtcdEncomenda.Text & "' "
cmdCPF = New FbCommand(sqlCPF, con)
readerCPF = cmdCPF.ExecuteReader()
If readerCPF.Read = True Then
MsgBox("Essa Correspondência já foi registrada")
Limpar()
Exit Sub
End If
readerCPF.Close()
Abrir()
Dim cmd As FbCommand
Dim sql As String
sql = "INSERT INTO CAD_ENTREGA (nome, apto, torre, email, cdrastreio, tipo_envio, tipo_encomenda, retiradopor, data_chegada, hora_chegada, data_entregue, hora_entregue, Status, img) VALUES ('" & txtNome.Text & "', '" & txtApto.Text & "', '" & txtTorre.Text & "', '" & txtEmail.Text & "', '" & txtcdEncomenda.Text & "', '" & txtEnvioEntrega.Text & "', '" & txtenvioEncomenda.Text & "', '" & txtRetirante.Text & "', '" & data & "', '" & hora & "', '', '', 'Registrado', @img) "
'DECLARAÇÃO DE PARAMETRO DE IMAGEM FILE
Dim param As New FbParameter
param.FbDbType = FbDbType.Binary
param.ParameterName = "img"
param.Value = byteArray
cmd = New FbCommand(sql, con)
cmd.Parameters.Add(param) ' copiar
cmd.ExecuteNonQuery()
Listar()
Catch ex As Exception
MsgBox("Erro ao Salvar!!" + ex.Message)
MsgBox("Ocorreu um Erro ao enviar E-mail")
End Try
Else
MsgBox("Código de Rastreio preenchimento obrigatório!!")
End If
venho a tempo buscando uma solução para meu problema na internet,apesar de muitas dicas encontradas nenhuma deu certo para resolver meu problema.
Tenho um aplicativo que antes usava o banco como mysql mas decidi mudar para firebird embarcado devido a facilidade de instalação para o cliente na hora de distribuir.
mas infelizmente estou tendo problema na conversão de data na hora de salvar o registro.
tenho uma tabela com o campo data_chegada e outro campo Hora_chegada.No formulario da aplicação não uso textbox para isso,pois quer que salve o banco a data e hora atual quando salvar registro.mas estou obtendo erro "erro ao salvar:conversion erro from string ".
tenho outros campos data com datatimepickler no formulario e salva corretamente sem erro no banco,mas a data atual da esse erro informado.
Juro que ja vasculhei tudo e não consigo resolver.=(
segue o código para se alguma alma bondosa conseguir uma solução serei muitíssimo grato.
Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
If txtcdEncomenda.Text <> "" Then
'FORMATANDO DATA PARA FIREBIRD
Dim data As String
data = Now.ToString("yyyy/MM/dd")
Dim hora As String
hora = Now.ToString("yyyy/MM/dd hh:mm")
Try
'TRATAMENTO PARA IMAGEM DO TIPO IMAGE DIRETO DA PICKTURE BOX
Dim ms As New IO.MemoryStream
img.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim byteArray = ms.ToArray
'VERIFICAR SE A ENCOMENDA JÁ FOI ENTREGUE
Abrir()
Dim cmdCPF As FbCommand
Dim readerCPF As FbDataReader
Dim sqlCPF As String
sqlCPF = "SELECT * FROM CAD_ENTREGA where cdrastreio = '" & txtcdEncomenda.Text & "' "
cmdCPF = New FbCommand(sqlCPF, con)
readerCPF = cmdCPF.ExecuteReader()
If readerCPF.Read = True Then
MsgBox("Essa Correspondência já foi registrada")
Limpar()
Exit Sub
End If
readerCPF.Close()
Abrir()
Dim cmd As FbCommand
Dim sql As String
sql = "INSERT INTO CAD_ENTREGA (nome, apto, torre, email, cdrastreio, tipo_envio, tipo_encomenda, retiradopor, data_chegada, hora_chegada, data_entregue, hora_entregue, Status, img) VALUES ('" & txtNome.Text & "', '" & txtApto.Text & "', '" & txtTorre.Text & "', '" & txtEmail.Text & "', '" & txtcdEncomenda.Text & "', '" & txtEnvioEntrega.Text & "', '" & txtenvioEncomenda.Text & "', '" & txtRetirante.Text & "', '" & data & "', '" & hora & "', '', '', 'Registrado', @img) "
'DECLARAÇÃO DE PARAMETRO DE IMAGEM FILE
Dim param As New FbParameter
param.FbDbType = FbDbType.Binary
param.ParameterName = "img"
param.Value = byteArray
cmd = New FbCommand(sql, con)
cmd.Parameters.Add(param) ' copiar
cmd.ExecuteNonQuery()
Listar()
Catch ex As Exception
MsgBox("Erro ao Salvar!!" + ex.Message)
MsgBox("Ocorreu um Erro ao enviar E-mail")
End Try
Else
MsgBox("Código de Rastreio preenchimento obrigatório!!")
End If
Samuel
Curtidas 0
Respostas
Emerson Nascimento
23/06/2020
primeiro é preciso saber quais os tipos dos campos envolvidos.
vou supor que data_chegada é do tipo DATE e hora_chegada é VARCHAR(5).
vou supor que data_chegada é do tipo DATE e hora_chegada é VARCHAR(5).
data = Now.ToString("yyyy/MM/dd") hora = Now.ToString("hh:mm")
GOSTEI 0
Samuel
23/06/2020
primeiro é preciso saber quais os tipos dos campos envolvidos.
vou supor que data_chegada é do tipo DATE e hora_chegada é VARCHAR(5).
vou supor que data_chegada é do tipo DATE e hora_chegada é VARCHAR(5).
data = Now.ToString("yyyy/MM/dd") hora = Now.ToString("hh:mm")
Boa tarde Emerson,
Maravilha deu certo,Deus abençoe vc ajudou muito.
Não abusando da sua bondade,vc saberia me informar como eu corrijo o erro de acentos nas palavras digitadas,pois salva co ? as palavras com acento.
os caracteres do banco ta como UTF8.
Grato mais uma vez.
GOSTEI 0
Emerson Nascimento
23/06/2020
para tratar da acentuação, leia este artigo:
https://www.devmedia.com.br/configurando-um-banco-de-dados-no-firebird/8137
https://www.devmedia.com.br/configurando-um-banco-de-dados-no-firebird/8137
GOSTEI 0
Samuel
23/06/2020
para tratar da acentuação, leia este artigo:
https://www.devmedia.com.br/configurando-um-banco-de-dados-no-firebird/8137
https://www.devmedia.com.br/configurando-um-banco-de-dados-no-firebird/8137
Obrigado Emerson,
li esse poster mas não entendi oque tem que fazer =(,
Abraço.
GOSTEI 0