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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Tipo de dados Time com MySQL
rlinop
PORTO ALEGRE
RS - BRASIL
Postada em 14/11/2004 00:52 hs            
Olá gente é o seguinte, estou usando VB6, ADO, MYSQL .. Bom é o seguinte estou trabalhando com tipo de dados time por que tenho que fazer marcação de horários etc... Então.... Quero buscar dados no banco usando este sql:
 
SELECT C.Nome, H.HoraInicial, H.HoraFinal, H.Data, S.Servico
FROM Clientes C, Horarios H, Servico S
WHERE C.CodCliente = H.CodCliente AND S.CodServico = H.CodServico
ORDER BY DATA
 
Bom eu estou usando a interface do PhpMyAdmin para trabalhar com o banco MySQL, e testei este sql para ver se ele me trazia os dados que eu precisava.... Ótimo consegui obter este resultado:
 
Nome  HoraInicial  HoraFinal  Data  Servico 
CLIENTE2 14:00:00 15:00:00 2004-11-01 OUTRO
CLIENTE2 14:00:00 15:00:00 2004-11-01 OUTRO
CLIENTE2 14:00:00 15:00:00 2004-11-01 OUTRO
CLIENTE1 14:00:00 15:00:00 2004-11-01 OUTRO
CLIENTE1 14:00:00 15:00:00 2004-11-01 OUTRO
CLIENTE1 15:30:00 17:30:00 2004-11-08 SERVIÇO1
CLIENTE1 08:30:00 08:40:00 2004-11-11 SERVIÇO1
CLIENTE2 14:00:00 15:00:00 2004-12-12 SERVIÇO2
CLIENTE3 01:11:00 00:00:11 2044-11-11 SERVIÇO2
 
Perfeito.. Mas no VB estou tentando carregar um LisView exatamente com estes mesmos dados... Só que acontece um erro:
 
Private Sub CarregaLvw()
    sSql = "Select C.Nome, H.HoraInicial, H.HoraFinal, H.Data, S.Servico from Clientes C, Horarios H, Servico S where C.CodCliente = H.CodCliente And S.CodServico = H.CodServico ORDER BY Data"
    AbreBanco (sSql)
    Me.LvwHorarios.ListItems.Clear
   
    Do While Rs.EOF = False
        Set Lvw = Me.LvwHorarios.ListItems.Add
        Lvw.Text = Rs!Nome
        Lvw.SubItems(1) = Rs!Servico
        Lvw.SubItems(2) = Rs!Data
        Lvw.SubItems(3) = Rs!HoraInicial ' Aqui gera erro
        Lvw.SubItems(4) = Rs!HoraFinal ' Aqui gera erro
        Rs.MoveNext
    Loop
End Sub
 
O erro que acontece é o seguinte:
 
Run-time error '13':
Type mismatch
 
Bom eu não sei como fazer com que os tipos sejam compatíveis.. eu presumo que os dados são trazidos como string não???? Alguém sabe qual a solução?????
Eu fico MUITO agradecido com quem me ajudar...
Rafael Portal
     
rlinop
PORTO ALEGRE
RS - BRASIL
Postada em 14/11/2004 01:01 hs            
Ahh.. E tem outra... Quando eu debuguei descobri que os valores armazenados em Rs!HoraInicial, Rs!HoraFinal é Null.... Alguém sabe me dizer por que será que o valor está vindo como Null se o valor EXISTE??????? Agradecido.....

Rafael Portal
     
Sandro
não registrado
Postada em 16/11/2004 01:44 hs   
Olá,
Para evitar o erro citado, faça o seguinte:
    Lvw.SubItems(3) = IIF(IsNull(Rs!HoraInicial), "",Cstr(rs!HoraInicial))
    Lvw.SubItems(4) = IIF(IsNull(Rs!HoraFinal), "",Cstr(rs!HoraFinal))
Os tipos de dados Data/Time, são trazidos sob o tipo de dados adDateTime ou adTimeStamp, dependendo do que o usuário selecionar nas configurações do campo. Acontece que, quando não há valor no campo (ou a consulta não consegue carregar corretamente os dados) a ADO retorna o valor como Null, e ListView não aceita o tipo de dados nulo em seus subitens, portanto, você deve convertê-lo para uma string vazia (""). Como eu não conheço o MySQL, não sei porque esses campos estão vindo como Null, mas por quê você não usa string? É mais fácil, se o que o campo irá armazenar for apenas a hora e não uma data/hora, além do que, um campo string ocupe menos espaço no BD que um campo Time ou Data/Time.
 
um Abraço,
Sandro.
 
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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