Avatar billede mostcrazy Nybegynder
16. juli 2003 - 11:49 Der er 16 kommentarer og
2 løsninger

VB6: Søgning m. flere kriterier

Hej...

Jeg sidder pt. og arbejder på noget, hvor man har en form med flere tekstbokse, combobokse og checkbokse. Nu er det så bare lige sådan så jeg skal have lavet en søgefunktion, så når jeg har indtastet noget i felterne, valgt noget i combo eller checked af, så skal den søge blandt alle poster, og udskrive disse i en List.

Jeg har været lidt rundt på nettet og kigge for at se om jeg kunne finde noget om hvordan man laver en sådan søgefunktion, men har ikke kunne finde noget.

Håber der er nogen herinde som kan hjælpe.
Avatar billede martin_moth Mester
16. juli 2003 - 16:35 #1
Går du fra at du mener at der skal søges i en database?

Så er det bare at smide en forespørgsel (SQL) efter databasen, hvor SQL-udtrykket afhænger af de indstillinger du har valgt i dine checkboxe osv. Resultatet fra forespørgslen gemmes i et recordsæt, der kan skrives til en listbox.

Er ikke helt klar over præcis hvad du skal bruge hjælp til, men du kan da læse følgende gode tutorial om SQL http://www.w3schools.com/sql/default.asp
Avatar billede terry Ekspert
16. juli 2003 - 18:19 #2
mostcrazy> You need to build your SQL Dynamically. This means that you look at each field to see if it contains data and if so append this to the WHERE part of the SQL. How are you getting the data from the dB and what dB are you using?
Avatar billede mostcrazy Nybegynder
16. juli 2003 - 19:22 #3
terry -->> well I am using a MS Access dB and I am using the standard component in VB6 to connect to the dB.

But I have some plans. It would be nice to use a MySql database, but that's future plans. Nothing to discuss at this moment.
Avatar billede terry Ekspert
16. juli 2003 - 19:29 #4
Do you know what SQL is? if you do then do you know how to connect to the dB with an SQL statement?
You will need to build your SQL if you want to have a flexible search routine.
Avatar billede mostcrazy Nybegynder
16. juli 2003 - 21:36 #5
Well I have read a lot about SQL, but I doesn't know enough about to make advanced things. :o(
Avatar billede terry Ekspert
16. juli 2003 - 22:05 #6
Here is an example of how to build an SQL statement dynamicaly from the fields on your search form.


Function fldIsEmpty(fld As Variant)

    fldIsEmpty = True
    If Len(Trim(fld)) > 0 Then fldIsEmpty = False
   
End Function

Function NewFilter()
Dim sFilter As String
Dim sSQL as string

    sSQL = "SELECT * FROM YourTable "
    sFilter = "WHERE 1 "
   
    If Not fldIsEmpty(Me.cboBy) Then
        sFilter = sFilter & " AND TownID = " & Me.cboBy
    End If
   
    If Not fldIsEmpty(Me.cboGade) Then
        sFilter = sFilter & " AND StreetID = " & Me.cboGade
    End If

    'This field is a text field in the dB
    If Not fldIsEmpty(Me.cboType) Then
        sFilter = sFilter & " AND TypeID = '" & Me.cboType & "'"
    End If

    If Not fldIsEmpty(Me.txtYear) Then
        sFilter = sFilter & " AND årstal = " & Me.txtYear
       
    End If

    sSQL = sSQL & sFilter


End Function
Avatar billede terry Ekspert
16. juli 2003 - 22:06 #7
as you can see the function looks at the fields I use for my search criteria and if they are filled out I append it to the WHERE part of the SQL
Avatar billede mostcrazy Nybegynder
16. juli 2003 - 22:07 #8
thank you... I will study it further tomorrow.
Avatar billede martin_moth Mester
17. juli 2003 - 07:37 #9
mostcrazy: ta og læs den tutorial jeg linkede til - det tar 5 minutter, og er bestemt tiden værd :o)
Avatar billede mostcrazy Nybegynder
17. juli 2003 - 23:35 #10
martin_moth: jeg har siddet og kigget hele vejledningen igennem, og har fået opfrisket det jeg vidste om SQL + lidt mere på en god måde... nu begynder terry's kode at give lidt mere mening for mig :)
Avatar billede mostcrazy Nybegynder
17. juli 2003 - 23:36 #11
desværre har jeg også svært ved at se sammenhængen mellem SQL og VB, hvilket er lidt af et problem, når man skal lave sådan noget :)
Avatar billede martin_moth Mester
18. juli 2003 - 10:07 #12
SQL har egentligt ikke noget specifikt med VB at gøre.

Men du kan i VB skrive en connectionstring - en string, der forbinder en database (behøver ikke være Access) med et objekt du har erklæret.

Når du så har oprettet dit objekt og det "hænger sammen" med en fysisk database, kan du smide SQL-udtryk efter det, og dermed få læst udvalgt indhold fra din database ind i en variabel - typisk en variabel af typen recordset. Det er DER SQL bliver anvendeligt...

Der er vel 500 spørgsmål om emnet på eksperten, det seneste er under en time gammelt: http://www.eksperten.dk/spm/377350 - se første meget korte og præcise svar fra medion.

Bemærk, at SQL-udtryk også kan bruges i andre programmeringssprog og til andre databaser - det har på den måde ikke noget direkte med VB at gøre :o)
Avatar billede mostcrazy Nybegynder
23. juli 2003 - 12:15 #13
jeg takker for svarene, jeg har desværre lige fået lidt andet jeg skal lave inden jeg kommer videre med det her, derfor vil jeg gerne lukke spørgsmålet
Avatar billede martin_moth Mester
23. juli 2003 - 12:20 #14
Så accepter og luk - held og lykke :o)
Avatar billede mostcrazy Nybegynder
23. juli 2003 - 14:29 #15
jeg vil gerne give dig nogle point også martin_moth :o)

takker...
Avatar billede martin_moth Mester
23. juli 2003 - 14:36 #16
Jamen så tak for det da :o)
Avatar billede mostcrazy Nybegynder
13. august 2003 - 16:01 #17
martin_moth: gider du oprette et svar ?
Avatar billede martin_moth Mester
14. august 2003 - 08:18 #18
Oh - sorry :o)

Og tak for points (hvor mange jeg så end får ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging