03. august 2001 - 17:25Der er
22 kommentarer og 1 løsning
universal søgning
Hello Er der nogle der ved hvordan man programmerer en universal søgning i VBA til en accessdatabase?
Indtil videre har jeg en søgning der ser således ud:
If Not fldIsEmpty(Me.Søgefelt9) Then stLinkCriteria = stLinkCriteria & \" AND [Sidste telefon] Like \'*\" & Me.Søgefelt9 & \"*\'\"
End If
-som søger på indholdet i søgefelt9 sammenlignet med feltet [Sidste telefon] i Kunder-databasen. Men kan man ikke kode en form for universal søgning, hvor man har et felt der fx hedder \'universal\', hvori man så kan indtaste hvad som helst, og som ved udførsel søger på alle felterne i Kundedatabasen? Det går jeg udfra man godt kan - og i så fald er der nogle der har en løsning?
Den er jeg med på. Jeg havde også en ide om at skrive som det ex. jeg ligger ud med øverst, hvor jeg kunne tilføje alle felterne én efter én, men det bliver bare langhåret, da man skal kunne søge på ca. 50 felter.....Jeg er interesseret i, hvis det kan laves på en smartere måde.
Jeg har her på min nattevagt også lavet en kode i DAO.
Function Search(strSearch As String)
Dim db As DAO.Database Dim fld As Field Dim strTarget As String Dim rst As Recordset
Set db = CurrentDb Set rst = db.OpenRecordset(\"Ruter\")
With rst .MoveFirst Do While Not rst.EOF For Each fld In .Fields strTarget = CStr(fld) If InStr(strTarget, strSearch) > 0 Then MsgBox .Fields(\"ruteId\").Value End If Next fld .MoveNext Loop End With
terry, Jeg har oprettet et søgefelt \"Søgefelt11\", hvor jeg også har oprettet en knap, som hedder søg universalt som knytter sig til feltet. Jeg har prøvet og implementere dit forslag, så det ser således ud:
Private Sub Universalt_Click()
Dim db As Database Dim tdf As TableDef Dim fld As Field
stLinkCriteria = \"1\"
If Not fldIsEmpty(Me.Søgefelt11) Then
Set db = CurrentDb Set tdf = db.TableDefs(\"Final\")
For Each fld In tdf.Fields
If fld.Type = dbText Then stLinkCriteria = stLinkCriteria & \" OR \" & fld.Name & \" Like \'*\" & Me.Søgefelt11 & \"*\'\" End If
hej nih, er \"Ruter\" det der svarer til tabelnavnet? Og svarer \"Ruter\" til søgefeltet, eller hvad? Hvad mener du med, at \"den kaldes med: Search (\"hej\")\" ?
Puha, det er godt jeg er anonym, man skulle jo nødig tro jeg var dum....
\"Ruter\" er tabelnavnet, \"ruteID\" er feltnavnet på det felt som din søgning skal retunere.
Prøv at oprette en ny form med et tekstfelt eks: txtSøg. I txtSøg\'s afterUpdate event skal du skrive: search (txtSøg.value) Min function: Search kan du ligge enten i et modul for sig eller i formens modul - Husk at rette tabel- og felt navn. Dette er kun en test der retunere feltet ruteID i en msgBox. Vi kan godt arbejde videre med at indsætte søgeresultattet i en liste ????
Koden er dog ikke så langhåret - prøv at sætte markøren på de forskellige udtryk og tryk F1.
One of the problems is because some field names contain spaces so they have to be in []. Also, because we now are using OR and not AND then we cant start with stLinkCriteria = \"1\" which results in all records being in the result.
numsi> Do you mean that it isnt working? As I said it is working here. Have you made a reference to DAO 3.6 in the Tools+References menu when in code view?
hi numsi> In Tools+References remove the reference to MS ActiveX Data Object 2.1 This is only necessary when using ADO. Your now using DAO and therefore you need the refrence to DAO 3.6 which you have.
Thanks again!. I would never have found out of that myself. It\'s working now, but only on Textfields. I can not search for date-values. In the new database I have changed the datatype from text to date values in the date fields. I did that so that i can use the between date feature. The LinkCriteria is a String know, but is it complicated to change the code, so that it can search on both text and date fields? I know that you have helped me enough, but I\'m just asking. If it is possible, what\'s the code for universal search on datefields instead of textfields?
numsi> to me it doesnt seem logical to search through all of the text fields if all you have entered is a date. You have the other fields on the form and if the user eneters a data then wouldnt it be logical to only use that?
Anyway, to you rquestion: alter the line If fld.Type = dbText Then
Yes, I know it sounds unlogical, but the company wishes a feature to search all the fields, if it happens that they can not specify the search criteria - maybe if they just want to see what happened a specific date, despite of it is the [FOllowup]-date, [Sidste køb]-date etc.
It\'s working perfect know, thanks to you again. I\'m just wondering, how long have you been working with access and vba ?
well I have been programming for thelast 15 years or so, have tried my hands on a it of everything. Access and VB the last 4-5 years or so.
Anyway glad to hear its working now
Synes godt om
Ny brugerNybegynder
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.