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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  ADO - SQL
ninh@
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 30/05/2005 18:28 hs            
Oi genteee
De volta com minhas duvidas...
Estou tentando atualizar dois campos no BD access, um concluido - sim/não e outro atualiza_data - data/hora 
estou tentando o seguinte codigo para que com um simples clique no checkbox(check1) os campos sejam atualizados no BD.  POREM, ao clicar no checkbox recebo a mensagem "Tipos de dados imcompativeis na expressão de critério". 
ALGUEM PODE ME DIZER O QUE ESTA ACONTECENDO???? será que não posso usar esta sql assim???  se não, como faço???? será que a lógica esta errada???
HEEELLLLPPPPP
Private Sub Check1_Click()
    Dim dtConcluida  As String
    Dim DEF As Boolean
    If Check1.Value = 1 Then
       DEF = True
       dtConcluida = Format(Now, "dd/mm/yyyy hh:mm")
    ElseIf Check1.Value = 0 Then
       DEF = False
    End If
    With Adodc2
       .Visible = False
       .ConnectionString = CNN
       .RecordSource = "Update TAREFAS set concluida = '" & DEF & "', atualiza_data = '" & dtConcluida & "' WHERE TAREFAS.codigo = '" & CODTarefa & "'"
       .EOFAction = adDoMoveMax
       .Mode = adModeReadWrite
       .Refresh
    End With
    gridTarefas.Refresh
End Sub
   
Rochª
Pontos: 2843 Pontos: 2843 Pontos: 2843
RIO DE JANEIRO
RJ - BRASIL
ENUNCIADA !
Postada em 31/05/2005 12:13 hs            
Ninho,
 
Tente colocar a data invertida mm/dd/yyyy.
 
Notei que voce esta colocando os campos entre aspas (normalmente usado em campo texto). Como voce definiu os campos na tabela, estao como texto ou boolean e date ?

__________________________________________________________________________
Qualquer coisa post
 
Emoções
Rochª
   
ninh@
SÃO PAULO
SP - BRASIL
Postada em 31/05/2005 15:46 hs            
O campo data esta dinido como data/hora e o campo concluida esta como sim/não.
É o seguinte eu fiz o mesmo formulário usando conexão ado e assim não precisei fazer esta sql de update. usei a propriedade de cada box para ligar ao banco assim os campos dos bancos são atualizados automaticamente, mas eu preciso saber esta outra forma que eu estava tentando antes, quando eu construo o recordset e faço chamadas na private enviando uma sql.

Emoções Tem alguem me olhando.....   é vc?
     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 31/05/2005 16:40 hs            
Tente usar "#" para as datas e coloque sempre no formato mm/dd/yyyy conforme o Rochª disse:
 
Private Sub Check1_Click()
    Dim dtConcluida  As String
    Dim DEF As Boolean
    If Check1.Value = 1 Then
       DEF = True
       dtConcluida = Format(Now, "mm/dd/yyyy hh:mm")
    ElseIf Check1.Value = 0 Then
       DEF = False
    End If
    With Adodc2
       .Visible = False
       .ConnectionString = CNN
       .RecordSource = "Update TAREFAS set concluida = '" & DEF & "', atualiza_data = #" & dtConcluida & "# WHERE TAREFAS.codigo = '" & CODTarefa & "'"
       .EOFAction = adDoMoveMax
       .Mode = adModeReadWrite
       .Refresh
    End With
    gridTarefas.Refresh
End Sub
 
veja se dá certo
 
qq coisa é só postar
 
t+
     
screech
PORTO ALEGRE
RS - BRASIL
ENUNCIADA !
Postada em 01/06/2005 11:05 hs            
Alguns pontos que acho importante.1º) Não há necessidade de data em formato, já que o próprio access entende como now (data e hora), o formato Date é apenas Data...2º) Em campos booleanos prefira usar 0 e 1 ao invés de true or false, não que estejam errados, contudo quase nunca dá erro!!!3º) Se desejas trabalhar com ADO, sugiro que construa um módulo com uma variável de comexão pública...Sendo assim seria algo do tipoSUAConexao.execute StringSQLex.: StringSQL = "UPDATE Tabela SET ...4º) Se o seu campo Código for do tipo Integer prefira usar "WHERE Tabela.codigo= " & CODTarefaEspero ter dado uma forcinha!

--------------------------------------
Screech
"Programar é arte..."
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 01/06/2005 15:26 hs            
Screech, qdo trata-se datas com sql precisa do formato mesmo gravando ou atualizando. (isso para o access, aqui não estou falando de outros bd)
Exemplo:
 
Dim db As ADODB.Connection
Dim rs As ADODB.Recordset
 
Private Sub Form_Load()
Set db = New ADODB.Connection
Set rs = New ADODB.Recordset
db.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:dteste.mdb"
rs.CursorLocation = adUseClient
rs.Open "Select * from tabteste", db
 
db.Execute "insert into TabTeste (Data) values (#01/06/2005#)"
rs.Requery
End Sub
 
Private Sub Command1_Click()
rs.Requery
rs.Find "Data = #" & Format("01/06/2005", "mm/dd/yyyy") & "#"
MsgBox rs("Data"), , "com format"
End Sub
 
Private Sub Command2_Click()
rs.Requery
rs.Find "Data = #01/06/2005#"
MsgBox rs("Data"), , "Sem format"
End Sub
O registro é encontrado usando o format mas sem o format gerará um erro:
"BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual."
 
Isso quer dizer q o registro não foi encontrado e a única diferença é q não foi usado o formato "mm/dd/yyyy"
 
qq coisa é só postar
 
t+
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



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