Hej, Ska det inte vara typ: varför skulle det behövs den där foo och subitems??? Hej Här är den optimerade varianten: Hej Sorry det var inget... Jag hade lyckate konvertera in informationen i databasen två gånger... Därav felet...Ser inte felet... Blir dubbla resultat
Jag kan bara inte se felet i denna kod...
Jag söker igenom en databas (access) från VB med en data-control men får upp dubbla sökresultat??? Jag förstår inte varför. Om jag stegar (F8) så går det bra men annars blir det dubbla resultat...
---
Data1.Refresh
Data1.Recordset.MoveFirst
Do While Data1.Recordset.EOF = False
If InStr(LCase(Data1.Recordset!Titel), LCase(txtSearch(0))) <> 0 Then
List1.AddItem Data1.Recordset!Titel
List1.AddItem Data1.Recordset!BokNr
End If
Data1.Recordset.MoveNext
Loop
---
/MarcusSv: Ser inte felet... Blir dubbla resultat
dim foo as listitem
Data1.Refresh
Data1.Recordset.MoveFirst
Do While Data1.Recordset.EOF = False
If InStr(LCase(Data1.Recordset!Titel), LCase(txtSearch(0))) <> 0 Then
set foo = List1.AddItem(Data1.Recordset!Titel)
foo.subitems(0) = Data1.Recordset!BokNr
End If
Data1.Recordset.MoveNext
Loop Sv: Ser inte felet... Blir dubbla resultat
/MarcusSv: Ser inte felet... Blir dubbla resultat
Ser inte felet direkt men tex Refresh gör med automatik MoveFirst.
Så här skulle jag skriva samma sak.
dim foo as listitem
Data1.Refresh
Do Until Data1.Recordset.EOF
If InStr(LCase(Data1.Recordset("Title"), LCase(txtSearch(0))) <> 0 Then
set foo = List1.AddItem Data1.Recordset("Title)
foo.subitems(0) = Data1.Recordset("BokNr")
End If
Data1.Recordset.MoveNext
Loop
mvh
SvenSv: Ser inte felet... Blir dubbla resultat
'Anropet
Data1.Refresh
Search List1, Data1.Recordset, "BokNr", "Titel ", txtSearch(0)
'Subrutin. Lägg den i formuläret eller modul
Public Sub Search(ListBox As ListBox, Recordset As Recordset, TextField As String, DataField As String, Search As String)
Dim fldText As Field
Dim fldData As Field
If Not (Recordset.BOF And Recordset.EOF) Then
Set fldText = Recordset(TextField)
Set fldData = Recordset(DataField)
Recordset.MoveFirst
Do Until Recordset.EOF
If InStr(1, fldText.Value, Search, vbTextCompare) Then
ListBox.AddItem fldText.Value
ListBox.ItemData(ListBox.NewIndex) = fldData.Value
End If
Recordset.MoveNext
Loop
End If
End SubSv: Ser inte felet... Blir dubbla resultat
>If Not (Recordset.BOF And Recordset.EOF) Then
Detta är långt ifrån optimalt.
Måste testa Not And och EOF och BOF helt i onödan.
SvenSv: Ser inte felet... Blir dubbla resultat
Men tack ändå!
/Marcus