23. februar 2007 - 20:47Der er
11 kommentarer og 1 løsning
In(string)
Hejsa Jeg har forsøgt mig på eksperten med dette spørgmål før, men prøver lige igen. Faktisk ret simpelt! Jeg har en forespørgsel. I kriteriet for et felt tblturer.tur skriver lige in(15;29). Resultat viser poster hvor tur er enten 15 eller 29. Fint nok. Jeg vil nu i stedet bruge et tekstfelt eller lign. fra en formular som kriterie. Altså in(forms!minformular!tekstfelt) I tekstfeltet på minformular skriver jeg 15. Resultat er OK. Men hvis jeg i tesktfeltet skriver 15;29 resultere det i en fejl når forespørglen kørers. Jeg har før løst problemet ved at afvilke et sql fra koden, men dette er meget tungt at vedligeholde. 50 oveni for et svar inden 21:15 i aften ;-)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Er det maks 3 forskellige, så kan du gøre sådan direkte i forespørgslen, du kan bare føje flere til, den spørger om hver enkelt, du slår bare enter, hvis du ikke vil svare på alle. In ([Tur1];[tur2];[Tur3])
Det ved jeg. Men den holder ikke. Jeg har lavet det sådan, at man kan vælge turer fra en multiselect liste. Der kører så noget strenggymnastik som danner tekstfeltet. Der kan vælges alt fra 1 - 50 værdier.Derfor ikke holdbart med en prompt.
Hvis ikke der findes en løsning. Løser jeg den på følgende måde,selvom jeg ikke synes godt om løsningen. fra formularen kører der noget kode dim sqlstr as string sqlstr = "select tbltur.turnr From tbltur Where tbltur.turnr in(" & tekstfelt & ")" CurrentDb.QueryDefs("forespørgsel1").sql = sqlstr
Jeg kan derefter joine forespørgsel1 med den forespørgsel det hele drejer sig om. På kan jeg stadig bruge forespørgselsgridet til tilpasning og ændring af min forespørgsel.
Jeg har en form, med en listboks 'List0' og en kommandoknap.
I listboksen har jeg alle ture, og ikke andet, de kan markeres alle eller enkeltvis.
Jeg vælger nu på min liste, og via kode, tjekker jeg om de er valgt.
tur nummeret, på de valgte gemmer jeg i en tabel 'ValgteTure' med et felt som hedder'Tur'.
Tabellen tømmes automatisk inden nye valg sættes ind.
Tabellen og feltet skal være oprettet i forvejen.
Link så din tblTurer.tur til ValgteTure.tur, så får du det ud du ønsker.
Her er så koden:
Private Sub Kommandoknap2_Click() Dim StrSql As String, S As Integer, Tal As Long DoCmd.SetWarnings = False StrSql = "DELETE * FROM ValgteTure;" ' tømmer tabellen ValgteTure DoCmd.RunSQL StrSql
For S = 0 To Me.Liste0.ListCount - 1
If Me.Liste0.Selected(S) Then Tal = Me.Liste0.Column(0, S) StrSql = "INSERT INTO ValgteTure ( Tur ) SELECT " & Tal & ";" ' sætter dem ind såm er valgt i listboksen DoCmd.RunSQL StrSql End If Next DoCmd.SetWarnings = True
Terry - i understand your wondering. Honestly I came up with the idea to join the simple select statement from the kode, with a pre-defined query just yesterday. What i ment by "før løst problemet" was that I previously solved the problem by writing the entire sql in the code - not exactly a userfriedly method. The solution I use perposed "23/02 21:22:07" works for me alright, but i will still be happy to give up 150 point for a solution to the initial problem ;-)
I think this question has actullay been up before, and I think I gave an answer using something which you suggested earlier, whic is still what I would use.
CurrentDb.QueryDefs("forespørgsel1").sql = sqlstr
And if you wanted a more complex query with joins then you could still do that in code.
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.