USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Datas/Números/Strings)

Título da Dica:  Gravar data/hora em Access ou SqlServer
Postada em 11/2/2004 por Semmer      Clique aqui para enviar email para o autor  semmer@infoinsight.com.br
Aqui está uma função que pode resolver todos os problemas com formato de data/hora no momento de gravar num banco Access ou SqlServer.
Passando como parâmetro o campo do formulário ou a variável que contém a data, a função retorna o formato correto para criar a instrução de Insert ou Update:

'No módulo:
Public Function SqlDT(ByVal varData As Variant, Optional ByVal BancoAccess As Boolean = True, _
Optional ByVal Hora As Boolean = False) As String
'Retorna a varData convertida em expresão que a linguagem SQL entende: 'YYYY-MM-DD hh:mm:ss'
'BancoAccess = Quando é True indica que o banco é Access, False indica que é SqlServer
'Hora = Quando é True retorna a hora junto com a data, False retorna apenas a data
   SqlDT = "Null"
   If Not IsDate(varData) Then Exit Function
   Dim DtSql, DtAspas
   DtSql = CDate(varData)
   DtAspas = IIf(BancoAccess, "#", "'")
   SqlDT = DtAspas & Year(DtSql) & "-" & Format(Month(DtSql), "00") & "-" _
      & Format(Day(DtSql), "00") & IIf(Hora, " " & Format(Hour(DtSql), "00") & ":" _
      & Format(Minute(DtSql), "00") & ":" & Format(Second(DtSql), "00"), "") & DtAspas
End Function

'No código do form - banco Access:
Dim xSql
xSql = "insert into tabela (cod, nome, emissao, gravacao) " _
   & "values (" & txtCod.Text & ", '" & txtNome.Text & "', " _
   & SqlDT(txtEmissao.Text) & ", " & SqlDT(Now, , True) & ")"

'No código do form - banco SqlServer:
Dim xSql
xSql = "insert into tabela (cod, nome, emissao, gravacao) " _
   & "values (" & txtCod.Text & ", '" & txtNome.Text & "', " _
   & SqlDT(txtEmissao.Text, False) & ", " & SqlDT(Now, False, True) & ")"

'O parâmetro opcional BancoAccess pode ser retirado da função desde que seja alterada a linha 5 do código, fixando um único tipo de banco de dados:
   DtAspas = IIf(BancoAccess, "#", "'")   --->   DtAspas = "#" 'para Access
   DtAspas = IIf(BancoAccess, "#", "'")   --->   DtAspas = "'" 'para SqlServer
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página