|
|
Postada em 23/03/2005 10:41 hs
Bom Dia galera do VB Olha meu problema. Tenho um select bem simples (SELECT * FROM Monografia WHERE autores LIKE '%autor%' ORDER BY titulo) que tem que me chamar um resultado para ser adicionado em um Listview. Quando ele executa o SQL, acha o valor que eu quero, mas quando eu vou colocar no Listview,ele some e mostra que está NULL, incrivel, voce passa o mouse uma vez e ve o resultado, movimenta o mouse e coloca sobre o mesmo lugar e fica null, como isso pode acontecer, mistério!!! O engraçado é que não são todas as linhas que estão com este problema, só algumas, pelo amor de Deus, alguém tem aí um caça-fantasmas para me explicar o que pode ser???? Exemplo de uma das Linhas com problema: Quando passa o mouse no rstfonte aparece, passo novamente some,MISTÉRIO ou não, HELP-ME If rstFonte.Fields(1) <> "" Then Lista.SubItems(2) = Replace(Replace(Trim(rstFonte.Fields(1)), "´", "'"), vbNewLine, "; ") 'autor Valew Galera
|
|
|
|
|
|
|
|
Postada em 23/03/2005 10:57 hs
Voçe já verificou se não há realmente valores nulos na sua tabela, execute esta pesquisa diretamente no banco de dados e veja o resultado se não ficau compos Nulos ou tente isto aqui... Public Function nulo(str As Variant, Optional Sust As Variant) As String Sust = IIf(IsEmpty(Sust) = False, Sust, " ") Sust = IIf(IsMissing(Sust) = False, Sust, " ") nulo = IIf(IsNull(str) = True, Sust, str) End Function para chamar use... Lista.SubItems(2) = Replace(Replace(Trim(nulo(rstFonte.Fields(1))), "´", "'"), vbNewLine, "; ") 'autor esta funcaonzinha pega o recordsete verifica o valor se é nulo e renorna o Valor da mesma ou qualquer string que voce colocar
|
|
|
|
|
|
Postada em 23/03/2005 11:02 hs
E ai blz Maxcim Olha só. Eu verifiquei tb no banco através do Query Analyser e realmente os dados estão no BD, mas não aparecem. Essa função eu já fiz uma parecida e dá na mesma.
|
|
|
|
|
|
Postada em 23/03/2005 11:31 hs
José, poste a parte do codigo desde a pesquisa até a que insere dados no listview
|
|
|
|
|
|
Postada em 23/03/2005 11:37 hs
Ai vai resp = resp & "%" resp = Replace(Trim(resp), "'", "´") Select Case Result Case 1: Sql = "SELECT * FROM Monografia WHERE autores LIKE '%" & resp & "' ORDER BY titulo" Case 2: Sql = "SELECT * FROM Monografia WHERE titulo LIKE '%" & resp & "' ORDER BY titulo" Case 3: Sql = "SELECT * FROM Monografia WHERE assunto LIKE '%" & resp & "' ORDER BY assunto" Case 4: Sql = "SELECT * FROM Monografia WHERE tombo LIKE '" & resp & "' ORDER BY tombo" Case 5: Sql = "SELECT * FROM Monografia WHERE titulo LIKE '%" & resp & "' or notas LIKE '%" & resp & "' or assunto LIKE '%" & resp & "'ORDER BY tombo" End Select Set rstFonte = ADOConn.Execute(Sql) 'limpa a lista de itens lstResultado.ListItems.Clear Set Lista = Nothing ' Carregar ListView If Senha = 1 Then If rstFonte.EOF = False And rstFonte.BOF = False Then rstFonte.MoveMin While Not rstFonte.EOF Set Lista = lstResultado.ListItems.Add If rstFonte.Fields(1) <> "" Then Lista.SubItems(1) = Replace(Replace(Trim(rstFonte.Fields(1)), "´", "'"), vbNewLine, "; ") 'autores If rstFonte.Fields(2) <> "" Then Lista.SubItems(2) = Replace(Replace(Trim(rstFonte.Fields(2)), "´", "'"), vbNewLine, "; ") 'titulo If rstFonte.Fields(8) <> "" Then Lista.SubItems(3) = Replace(Replace(Trim(rstFonte.Fields(8)), "´", "'"), vbNewLine, "; ") 'assunto rstFonte.MoveNext Wend End If If rstFonte.EOF = True And rstFonte.BOF = True Then MsgBox "Item não Cadastrado", vbInformation + vbOKOnly, "Aviso do Sistema" cmdSeleciona.Enabled = False Call MarcaTexto(txtResult) End If Else If rstFonte.EOF = False And rstFonte.BOF = False Then cmdSeleciona.Enabled = True rstFonte.MoveMin While Not rstFonte.EOF Set Lista = lstResultado.ListItems.Add If rstFonte.Fields(0) <> "" Then Lista.SubItems(1) = Replace(Trim(rstFonte.Fields(0)), "´", "'") 'tombo If rstFonte.Fields(1) <> "" Then Lista.SubItems(2) = Replace(Replace(Trim(rstFonte.Fields(1)), "´", "'"), vbNewLine, "; ") 'autor Lista.SubItems(2) = Trim(rstFonte.Fields("Autores")) 'autor If rstFonte.Fields(2) <> "" Then Lista.SubItems(3) = Replace(Replace(Trim(rstFonte.Fields(2)), "´", "'"), vbNewLine, "; ") 'titulo If rstFonte.Fields(3) <> "" Then Lista.SubItems(4) = Replace(Trim(rstFonte.Fields(3)), "´", "'") 'instituicao If rstFonte.Fields(4) <> "" Then Lista.SubItems(5) = Replace(Replace(Trim(rstFonte.Fields(4)), "´", "'"), vbNewLine, "; ") 'orientador If rstFonte.Fields(5) <> "" Then Lista.SubItems(6) = Replace(Trim(rstFonte.Fields(5)), "´", "'") 'local If rstFonte.Fields(6) <> "" Then Lista.SubItems(7) = Replace(Trim(rstFonte.Fields(6)), "´", "'") 'data If rstFonte.Fields(9) <> "" Then Lista.SubItems(8) = Replace(Trim(rstFonte.Fields(9)), "´", "'") 'paginas Lista.SubItems(9) = Replace(Trim(rstFonte.Fields(7)), "´", "'") 'doacao Lista.SubItems(10) = Replace(Trim(rstFonte.Fields(8)), "´", "'") 'assunto If rstFonte.Fields(10) <> Null Then Lista.SubItems(11) = Replace(Replace(Trim(rstFonte.Fields(10)), "´", "'"), vbNewLine, "; ") 'notas If rstFonte.Fields(10) <> Null Then Lista.SubItems(11) = Trim(rstFonte.Fields(10)) 'notas rstFonte.MoveNext Wend End If If rstFonte.EOF = True And rstFonte.BOF = True Then MsgBox "Itens não Cadastrados", vbInformation + vbOKOnly, "Aviso do Sistema" cmdSeleciona.Enabled = False Call MarcaTexto(txtResult) End If
Valew
|
|
|
|
|
|
Postada em 23/03/2005 12:32 hs
troque If rstFonte.EOF = False And rstFonte.BOF = False Then cmdSeleciona.Enabled = True rstFonte.MoveMin While Not rstFonte.EOF por If rstFonte.EOF = False And rstFonte.BOF = False Then cmdSeleciona.Enabled = True rstFonte.Move f i r s t ( tudo junto) While Not rstFonte.EOF foi aunica coisa diferente que percibiem seu codigo
|
|
TÓPICO EDITADO
|
|
|
|
|