Ga naar inhoud

SQL werkt niet goed, Visual Basic 6.0


anoniem

Aanbevolen berichten

Hallo, Ik wil een sql maken, en de zoekresulaten weergeven in een listview. de data wordt gehaald uit een ms access bestand. D.m.v. de onderstaande sql probeer ik de data te vinden, dit werkt wel, maar dan moet de gebruiker in de zoekcriteria de exacte titel intypen, anders vind hij het record niet. Terwijl ik wel de code like in de code heb staan..? [code:1:9d281ade11] a$ = "'" + Form1.Zoek_Title.Text + "'" 'Text titel Set adoRecordset = adoConnection.Execute("SELECT * FROM data WHERE [title] like " & a$ & "")[/code:1:9d281ade11] Hoe moet ik dit programmeren, zodat de sql alle records weergeeft in de listview die aan de zoekcriteria voldoen? dus niet alleen de record weergeven die exact aan het zoekcriteria voldoet. Want het probleem is ook, nu moet je de volledige titel weten, om het record te vinden. complete code die ik heb toegepast: [code:1:9d281ade11]Public Sub Filterdatabase() 'verwijder alle records in lvmain Form1.lvmain.ListItems.Clear 'Connection gefilterede database '############## LISTVIEW ########################## 'Haal de pictogrammen uit de Imagelist Form1.lvmain.Icons = Form1.ImageList1 Form1.lvmain.SmallIcons = Form1.ImageList1 'de kolomkoppen. De breedte van de kolommen is de breedte 'van het besturingselement gedeeld door het aantal Columnheader - objecten. Form1.lvmain.View = lvwReport 'Zet de eigenschap View op report Dim adoConnection As ADODB.Connection Dim adoRecordset As ADODB.Recordset Dim connectString As String '—Create a new connection -- Set adoConnection = New ADODB.Connection '—Create a new recordset -- Set adoRecordset = New ADODB.Recordset '—Build our connection string to use when we open the connection -- connectString = "Provider=Microsoft.Jet.OLEDB.3.51;" & "Data Source=D:\Visual Basic Files\program files\Cd Archief\Databases\database97.mdb" adoConnection.Open connectString a$ = "'" + Form1.Zoek_Title.Text + "'" 'Text titel Set adoRecordset = adoConnection.Execute("SELECT * FROM data WHERE [title] like " & a$ & "") Do Until adoRecordset.EOF 'maak een listitem -object. Dim itmX As ListItem 'Plaats gegevens in het listview 'Records ophalen uit database Set itmX = Form1.lvmain.ListItems.Add(, , adoRecordset!Unieknummer, 1, 1) itmX.SubItems(1) = adoRecordset!Title itmX.SubItems(2) = adoRecordset!artist itmX.SubItems(3) = adoRecordset!eigenaarcd adoRecordset.MoveNext Loop '############## EINDE LISTVIEW ########################## End Sub[/code:1:9d281ade11] (Het zoeken werkt op dit moment wel, maar nu moet je de volledige titel invullen bij het zoekcriteria) Als het fijner is om de fout te vinden, ben ik bereid om mijn project ff door te emailen.. als het wat handiger is om zo de fout te vinden. Alvast bedankt, Erwin
Link naar reactie
[quote:612228988c="erwinvb"][code:1:612228988c] a$ = "'%" + Form1.Zoek_Title.Text + "%'" 'Text titel[/code:1:612228988c] ik heb dit nooit gedaan met %, ik heb de code altijd zonder % gedaan... snap dat niet echt, hoe kan dat nou? [/quote:612228988c] [quote:612228988c="erwinvb schreef op 12 Jan 2003 15:10"] (Het zoeken werkt op dit moment wel, maar nu moet je de volledige titel invullen bij het zoekcriteria) :-? :-? :-? :-? [/quote:612228988c] [quote:612228988c="erwinvb"] maar hij werkt! Groeten Erwin[/quote:612228988c]
Link naar reactie
Nee, ik hoef de zoekcriteria niet helemaal exact in te vullen. Dat heb ik opgelost op de volgende manier. Als men tekst in het tekstvak zoek_title typt, dus bijvoorbeeld de t, dan werkt deze code hieronder... (in database.Filterdatabase staat de code om te zoeken) [code:1:50ad7738a0]Private Sub Zoek_Title_Change() Database.Filterdatabase End Sub[/code:1:50ad7738a0] NB. deze code werkt dus als de tekst veranderd in het tekstvak zoek_title. dan weergeeft hij alleen de records met de titel die met de t beginnen weer... vervolgens als men de titel nog steeds niet in de listview kan vinden, typt men de bv. de i, dan weergeeft hij alleen de records met de titel die met de ti beginnen... (met andere woorden, de records met de titel die niet met ti beginnen staan dan niet meer in de listview) enzovoorts.... deze codes werken bij mij perfect en zo kan men snel het record vinden!
Link naar reactie
  • 3 weken later...
Hoi , " & a$ & "" Je probeert de string a$ "ergens" in een veld te vinden? Gebruik dan "SELECT .... LIKE " & "'*" & a$ & "*'" Dus als a$ = "TEST" dan is de SQL zonder quotes dus SELECT .... LIKE '*TEST*' (let op de ENKELE quotes en wildcards) en dat staat tussen dubbele quotes in je code natuurlijk. Je kunt de enkele quotes ook door dubbele quotes vervangen, dan zou het als volgt worden: "SELECT ... LIKE " & chr$(34) & "*" & a$ & "*" & chr$(34) Succes!
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...