05. januar 2011 - 09:31Der er
17 kommentarer og 1 løsning
kriterie i query haster
jeg har en combo i en form1, hvor der er 2 kolonner. kolonne 1 er SAGSNAVN og kolonne 2 er CASEID. comboen har til formål at selectere en query på den bundne kolonne SAGSNAVN, men jeg har en ny query2 hvor jeg ønsker at denne skal udvælge poster på baggrund af comboens kolonne 2 CASEID.
Du kan lige så godt få en af mine parsere til sådan et søgekriterie - nu bruger jeg en typisk en multi select liste:
Sub LkUpListeParsX(Liste As ListBox, Clmn As Integer, FieldName As String, mycriteria As String, ArgCount As Integer, Istxt As Boolean)
' Copyrights Henrik Nielsen 2008 ' Multiselect box parser for alle typer liste - med valg af column - dette er noget , der rykker ' Create critera for WHERE clause
Dim varItem As Variant Dim strList As String, txtValg As String, LstStart As String, LstSlut As String
With Liste If .MultiSelect = 0 Then ' du kan kun vælge en ad gangen If Not IsNull(.Value) Then ' Append criterion to existing criteria. If ArgCount > 0 Then mycriteria = mycriteria & " and " End If If Istxt Then 'dette er en txt liste ' Enclose FieldValue and asterisk in quotation marks. mycriteria = (mycriteria & FieldName & " Like " & Chr(39) & Chr(42) & .Column(Clmn, .ListIndex) & Chr(42) & Chr(39)) Else ' dette er en tal liste ' lige ud af landevejen mycriteria = (mycriteria & FieldName & " = " & .Column(Clmn, .ListIndex)) End If ' Increase argument count. ArgCount = ArgCount + 1 End If
Else ' du kan vælge flere ad gangen ' Append criterion to existing criteria. If (ArgCount > 0 And Liste.[ItemsSelected].[Count] > 0) Then mycriteria = mycriteria & " and " End If
If Liste.[ItemsSelected].[Count] > 1 Then ' er der valgt mere end en i listen txtValg = " OR " LstStart = "( " LstSlut = ") " Else txtValg = "" LstStart = "" LstSlut = "" End If mycriteria = mycriteria & LstStart For Each varItem In .ItemsSelected If Istxt Then 'dette er en txt liste mycriteria = mycriteria & FieldName & " Like " & Chr(39) & Chr(42) & .Column(Clmn, varItem) & Chr(42) & Chr(39) & txtValg
Else ' dette er en tal lite mycriteria = mycriteria & FieldName & " = " & .Column(Clmn, varItem) & txtValg 'husk at kolonne (0) repræsenterer, den første kolonne, skal du vise noget 'andet end kolonne 0 - skjul kolonne 0 og vis f.eks. kolonne 1 End If ' Increase argument count. ArgCount = ArgCount + 1 Next varItem ' hov - hvis der er flere - skal vi lige fjerne det sidste or If Right(mycriteria, Len(txtValg)) = txtValg Then mycriteria = Left(mycriteria, Len(mycriteria) - Len(txtValg)) End If mycriteria = mycriteria & LstSlut ' ja - og så lige en afslutte parentes End If End With End Sub
Hej Henrik, du må være meget mere konkret da jeg ikke er udvikler :-)
normalt ville jeg blot lave en qyery hvor følgende var indsat:
WHERE (((ProductIdNumber.CaseID)=[Forms]![FrmCreateCaseStep1]![Combo0]));
men her refererer den jo til den bundne kolonne som er kolonne 1 på min combo. Jeg vil blot gerne at den istedet selecterer på kolonne 2 uden at denne bliver ændret til at være den bundne kolonne.
Hejsa, jeg vil blot sætte kriteriet ind i en ny forespørgsel
jeg ved at me. hendviser til den aktuelle form, men det kan bare skiftes ud med formens fulde navn som du skrev. kunne godt tænke mig syntaksen på dette så det kunne testets i en lille form, evt. en ny ren database da det kunne være en stor hjælp fremadrettet. :-)
Ja der kommer vi nok til kort. Der er ikke adgang til .column men blot boundcolumn inde fra queryeditoren, så du må stikke til at eksekvere din SQL inde fra VBA.
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.