Vraag & Antwoord

Programmeren

SQL werkt niet goed, Visual Basic 6.0

7 antwoorden
  • 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
  • Volgens mij moet je procenttekens (%) om je zoekwoord heen zetten: ... LIKE '%bla%' ...
  • Nee, dit werkt ook niet. [code:1:284ed91707] Set adoRecordset = adoConnection.Execute("SELECT*From data WHERE title like '% Form1.Zoek_Title %' ")[/code:1:284ed91707]
  • Ben je nu niet de &'s vergeten? In je voorbeeldcode in ieder geval wel...
  • [code:1:0ae984ed46] a$ = "'%" + Form1.Zoek_Title.Text + "%'" 'Text titel[/code:1:0ae984ed46] ik heb dit nooit gedaan met %, ik heb de code altijd zonder % gedaan... snap dat niet echt, hoe kan dat nou? maar hij werkt! Groeten Erwin
  • [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]
  • 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!

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.