Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

SQL werkt niet goed, Visual Basic 6.0

Dennis tS
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

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