Ir ao conteúdo
  • Cadastre-se

Dois erros que ocorrem no Win98!


Pulllga

Posts recomendados

Olá, sou o Pulllga,

Meu problema parece simples mas não consigo resolver!!!

No evento Load do meu form, eu carrego a data em um MaskEdit da seguinte forma:


mskDat.Text = Date

Ou, para testar:


mskDat.Text = Mid(Date, 1, 2) + "/" + Mid(Date, 4, 2) + "/" + Mid(Date, 7, 4)

Também funciona, já defini a propriedade Mask como texto ou número, mas sempre que rodo o programa em Win98, dá erro 380, erro de conversão de tipo de dados!

O outro erro é com o Data, eu tenho que preencher um ComboBox com os nomes dos estados, e pego estes nomes do banco de dados.

Qualquer ação que faço usando o banco de dados dá erro 91, alge de bloco de variável sem with.

Já tentei usar variável no lugar do data, usando o OpenRecordset para os estados, mas não funciona.

No XP dá tudo certo o problema é no Win98, e o pc tem o MDAC e o DCOM!!!

Segue todo o código do Load:


Private Sub Form_Load()
Dim x As Integer
Dim tmpRS As Recordset

mskDat.Text = Date
'mskDat.Text = Mid(Date, 1, 2) + "/" + Mid(Date, 4, 2) + "/" + Mid(Date, 7, 4)

frmDat.datEst.Recordset.MoveFirst
frmDat.datEst.Recordset.MoveLast
frmDat.datEst.Recordset.MoveFirst
cmbEst.Clear

While frmDat.datEst.Recordset.EOF = False
   cmbEst.AddItem frmDat.datEst.Recordset.Fields("nom").Value
   frmDat.datEst.Recordset.MoveNext
Wend

Set tmpRS = frmDat.datCons.Database.OpenRecordset("select * from Pessoas p, Representantes r_
                    where r.pes = p.Cod and r.tec = true", dbOpenSnapshot)
tmpRS.MoveFirst
cmbTec.Clear

While tmpRS.EOF = False
   cmbTec.AddItem tmpRS.Fields("nom").Value
   tmpRS.MoveNext
Wend

Set tmpRS = frmDat.datCons.Database.OpenRecordset("select * from Pessoas p, Representantes r_
                    where r.pes = p.Cod and r.com = true", dbOpenSnapshot)
tmpRS.MoveFirst
cmbPar.Clear

While tmpRS.EOF = False
   cmbPar.AddItem tmpRS.Fields("nom").Value
   tmpRS.MoveNext
Wend

End Sub

valeu pela ajuda... :D:D:D

Link para o comentário
Compartilhar em outros sites

Olá, eu mesmo me respondo, ninguém fala nada!

O erro do maskEdBox é só de conversão e formatação:


mskDat.Text = Date

É só mudar para:


mskDat.Text = Format(Date, "dd/mm/yyyy")

O outro da tabela é fácil, esse bloco:


frmDat.datEst.Recordset.MoveFirst
frmDat.datEst.Recordset.MoveLast
frmDat.datEst.Recordset.MoveFirst
cmbEst.Clear

While frmDat.datEst.Recordset.EOF = False
   cmbEst.AddItem frmDat.datEst.Recordset.Fields("nom").Value
   frmDat.datEst.Recordset.MoveNext
Wend

Deve ser feito usando o With:


with frmDat.datEst
   .Recordset.MoveFirst
   .Recordset.MoveLast
   .Recordset.MoveFirst
   cmbEst.Clear

   While .Recordset.EOF = False
      cmbEst.AddItem .Recordset.Fields("nom").Value
      .Recordset.MoveNext
   Wend
End With

Não sei porque só funciona com With, mas tem que ser assim, a menos que se faça alguma consulta SQL e use o OpenRecordset!!!

Se alguém souber explicar exatamente porque usar o With, por favor, poste aqui para que saibamos, não adianta sabermos que é assim, temos que saber o porque de ser assim.

valeu, T+ :D:D:D

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

O With não serve só para você digitar menos, segundo dizem o "With" é equivalente a (no seu caso):


'With
Dim tempvar
Set tempvar = with frmDat.datEst

'todos os ".propriedade" viram "tempvar.propriedade"

'End With
Set tempvar = Nothing

Em teoria escrever tudo por completo não deveria dar pau, mas só em teoria, já vi muito erro do VB6 sem explicação...

Sem explicação em partes, como você deve saber o ".datEst", ".Recordset", ".etc" são, na verdade, métodos que fazem não sei o que e retornam o que você realmente quer, e o problema muitas vezes é justamente esse "fazem não sei o que".

Com o With muitos desses métodos que seriam chamados varias vezes deixando oi programa mais lento e com a possibilidade de ocorrerem erros são chamados apenas uma vez.

É a preguiça do programador ajudando o VB6!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!