Avatar billede moba Nybegynder
23. februar 2007 - 20:47 Der 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 ;-)
Avatar billede mugs Novice
23. februar 2007 - 20:53 #1
Jeg tror det har noget at gøre med, at du bruger ; som adskillelse, idet det jo er et reserveret tegn i SQL. Prøv atr erstatte det med f.eks :

Men det er kun et gæt og ikke afprøvet.
Avatar billede moba Nybegynder
23. februar 2007 - 21:05 #2
har forsøgt, no good.
Avatar billede kabbak Professor
23. februar 2007 - 21:11 #3
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])
Avatar billede kabbak Professor
23. februar 2007 - 21:12 #4
Access spørger altid om et felts værdi, hvis den ikke kan finde det i tabellen.
Avatar billede cpufan Juniormester
23. februar 2007 - 21:18 #5
in("tekst1","tekst2","tekst3")
Avatar billede moba Nybegynder
23. februar 2007 - 21:18 #6
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.
Avatar billede moba Nybegynder
23. februar 2007 - 21:22 #7
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.
Avatar billede kabbak Professor
23. februar 2007 - 22:35 #8
Nu ved jeg ikke om du er til VBA programmering.

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


End Sub
Avatar billede terry Ekspert
24. februar 2007 - 13:30 #9
moba>In you rquestion you write
"...Jeg har før løst problemet ved at afvilke et sql fra koden, men dette er meget tungt at vedligeholde. "

what is "tungt" with the way you are doing it at the moment?
Avatar billede moba Nybegynder
24. februar 2007 - 13:43 #10
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 ;-)
Avatar billede terry Ekspert
24. februar 2007 - 16:08 #11
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.
Avatar billede moba Nybegynder
24. februar 2007 - 17:35 #12
Ok - i'll close the question now.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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