Avatar billede jensen363 Forsker
22. juli 2005 - 10:03 Der er 26 kommentarer og
2 løsninger

Forespørg på data i intervaller

I en forespørgsel udvælges alle data eller sprcifikke data :

WHERE(Tabel.Antal) Like "*" & [Formularer]![frmAnalyse]![cboKampagnestørrelseValg] & "*")

cboKampagnestørrelseValg indeholder følgende intervaller :

  < 1.000
  1.000 - 5.000
  5.000 - 10.000
  > 10.000

Hvad skal returneres i cboKampagnestørrelseValg for at kriteriet indsættes korrekt i forespørgslen ???
Avatar billede sjap Praktikant
22. juli 2005 - 12:00 #1
Jeg tror ikke du kan bruge flere kriterier (større end og mindre end) på den måde som du foreslår.

Du kan måske (har ikke prøvet det) lave forespøgselsstrengen ud fra følgende:

WHERE (Tabel.Antal) & [Formularer]![frmAnalyse]![cboKampagnestørrelseValg]

og så skal du bruge følgende strenge for de forskellige intervaller:

< 1.000
[cboKampagnestørrelseValg] = "<1000"

1.000 - 5.000
[cboKampagnestørrelseValg] = ">=1000 and (Tabel.Antal)<5000"

5.000 - 10.000
[cboKampagnestørrelseValg] = ">=5000 and (Tabel.Antal)<10000"

>10.000
[cboKampagnestørrelseValg] = ">=10000"
Avatar billede terry Ekspert
22. juli 2005 - 12:13 #2
WHERE Tabel.Antal
< 1000
between 1000 and 5000
between 5000 and 10000
> 10000
Avatar billede sjap Praktikant
22. juli 2005 - 12:15 #3
Jeg glemmer af en eller anden grund altid Between-operatoren. Det er er selvfølgelig smartere ;0(
Avatar billede jensen363 Forsker
22. juli 2005 - 12:18 #4
Jeg har allerede en opslagskolonne hvor dette står i, men den værdu som returneres vis cbo... giver intet resultat
Avatar billede jensen363 Forsker
22. juli 2005 - 12:24 #5
Sorry ... hvis jeg ikke udtrykte mig klart nok, men kriterierne alene <> Between o.s.v. kender jeg udemærket, men når dette skal vælges via cbo... så virker det ikke
Avatar billede terry Ekspert
22. juli 2005 - 12:31 #6
If one of the columns in the combo contains the criteria I gave then this should work



WHERE Tabel.Antal " & [Formularer]![frmAnalyse]![cboKampagnestørrelseValg].column(X)


where X is the column containing the criteria (first is 0)
Avatar billede jensen363 Forsker
22. juli 2005 - 12:42 #7
column(x) understøttes ikke i forespørgsler :o(
Avatar billede terry Ekspert
22. juli 2005 - 12:45 #8
you can build the sql in code and then make the query
Avatar billede terry Ekspert
22. juli 2005 - 12:48 #9
currentdb.QueryDefs("A").SQL = "SELECT......."
Avatar billede jensen363 Forsker
22. juli 2005 - 13:03 #10
Skal benytte forespørgslen som datagrundlag i en formular, så der virker vist ikke

Hele foresprøgslen ser således ud ( hvis det er nogen hjælp )

SELECT tblKampagneFormål.[KampagneFormål tekst] AS Kampagneformål, Count(tblKampagneData.KampagneID) AS [# Kampagner], tblKampagneData.KampagneFormål
FROM tblKampagneFormål INNER JOIN tblKampagneData ON tblKampagneFormål.KampagneFormål = tblKampagneData.KampagneFormål
WHERE (((tblKampagneData.KampagneStørrelse) Like "*" & [Formularer]![frmAnalyseRapporter]![cboKampagnestørrelseValg] & "*") AND ((tblKampagneData.NaceBrancheID) Like "*" & [Formularer]![frmAnalyseRapporter]![cboBrancheValg] & "*") AND ((tblKampagneData.KampagneType) Like "*" & [Formularer]![frmAnalyseRapporter]![cboKampagneTypeValg] & "*") AND ((tblKampagneData.Målgruppe) Like "*" & [Formularer]![frmAnalyseRapporter]![cboMålgruppeValg] & "*") AND ((tblKampagneData.Kunderelation) Like "*" & [Formularer]![frmAnalyseRapporter]![cboKunderelationValg] & "*"))
GROUP BY tblKampagneFormål.[KampagneFormål tekst], tblKampagneData.KampagneFormål
HAVING (((tblKampagneData.KampagneFormål) Like "*" & [Formularer]![frmAnalyseRapporter]![cboKampagneformålValg] & "*"));
Avatar billede terry Ekspert
22. juli 2005 - 13:04 #11
so use the SQL as the forms data source!
Avatar billede terry Ekspert
22. juli 2005 - 13:05 #12
but why can you not use the query?
Avatar billede jensen363 Forsker
22. juli 2005 - 13:10 #13
Fordi den første Where betingelse :

(tblKampagneData.KampagneStørrelse) Like "*" & [Formularer]![frmAnalyseRapporter]![cboKampagnestørrelseValg] & "*")

ikke sender kriteriet "BETWEEN 1000 AND 5000" tilbage til forespørgslen
Avatar billede terry Ekspert
22. juli 2005 - 13:19 #14
Have you tried changing the SQLin the query? If so does it give you what you want to see?

If it gives you what you want to see then in the combos AFTER UPDATE event you need to change the SQL in the query using the example I gave. Then you need to requery the form where you use the query!

no matter what method you choose you will STILL need to requery the form when you choose another  entry from the combo!
Avatar billede jensen363 Forsker
22. juli 2005 - 13:21 #15
I think I have tried everything :o(
Avatar billede terry Ekspert
22. juli 2005 - 14:14 #16
I just want to make sure you are doing everything in the correct order!


can you alter the SQL in your query using the example I gave?

If you can, then does the query work?

If it works then do you alter the SQL AFTER choosing from the combo?


If all this works, then can you use the query in the forms records source?

If you do, then do you requery the form AFTER you choose from the combo?
Avatar billede jensen363 Forsker
22. juli 2005 - 14:21 #17
WHERE Tabel.Antal " & [Formularer]![frmAnalyse]![cboKampagnestørrelseValg].column(X) doesn't work directly in the query

In alle cases, I alter the SQL after update cbo...

It is as if the value from the cbo... returns a string that the query doesn´t understand or conceive differently
Avatar billede terry Ekspert
22. juli 2005 - 17:56 #18
any chance of seeing the dB?
eksperten@NOSPAMsanthell.dk

remove NOSPAM
Avatar billede jensen363 Forsker
22. juli 2005 - 18:17 #19
Sorry, but the db is too big ... but let me explain again.

This works :

SELECT tblData.KampagneStørrelse
FROM tblData
WHERE (((tblData.KampagneStørrelse) Between 5 And 8));

This doesn´t :

SELECT tblData.KampagneStørrelse
FROM tblData
WHERE (((tblData.KampagneStørrelse)=[Formularer]![Formular]![cboIntervalValg]));

If the value in cboIntervalValg is 1 .... no problem, but if cboIntervalValg is "Between 8 and 10 " the query fails ...

I´ve made an example i can mail to you .. ok ?
Avatar billede terry Ekspert
22. juli 2005 - 20:42 #20
taking a look now :o)

But just be looking at this line
WHERE (((tblData.KampagneStørrelse)=[Formularer]![Formular]![cboIntervalValg]));

I see a problem!
Thats if you have done what I mentioned in an earlier comment.

But I'll get back as soon as possible, hopefully with an answer!
Avatar billede fdata Forsker
22. juli 2005 - 23:04 #21
Kan du ikke opbygge en string:
strSQL="SELECT tblData.KampagneStørrelse" & _
      " FROM tblData" & _
      " WHERE tblData.KampagneStørrelse " & [Formularer]![Formular]![cboIntervalValg] & ";"
Værdierne i comboboxen kan så f.eks. være
=1
Between 5 And 8
>100
Avatar billede terry Ekspert
22. juli 2005 - 23:16 #22
hi fdata
I have sent a mail to jensen363 with the following suggestion

Private Sub cboIntervalValg_AfterUpdate()

    Dim sSQL As String

    sSQL = "SELECT tblData.KampagneStørrelse FROM tblData "
   
    If Not IsNull(Me.cboIntervalValg) Then
        sSQL = sSQL & " WHERE tblData.KampagneStørrelse " & Me.cboIntervalValg
    End If
   
    Me.RecordSource = sSQL
       
End Sub

combo contains

Interval
= 1
= 2
= 3
< 5
Between 2 and 5
Between 5 and 8
> 8
Avatar billede fdata Forsker
23. juli 2005 - 19:53 #23
Spooky.
I like your way of thinking  ;o))
Avatar billede terry Ekspert
24. juli 2005 - 15:34 #24
thanks, hope its what you wanted!
Avatar billede jensen363 Forsker
24. juli 2005 - 15:36 #25
Hi Terry

The solution is ok, if you only use one criterie, but I need to have a solution that works with all the other criteria, som I ended up with a solution where the cbo.. returns a from value and a to value. This works with til Between syntax.

The only problem now is, that I need to have a default value in the cbo.. when opening the form/query

Thanks for your effort and time ... the same to you > fdata
Avatar billede terry Ekspert
24. juli 2005 - 15:38 #26
the soluition would still be the same, build the SQL in code.
Avatar billede terry Ekspert
24. juli 2005 - 16:04 #27
Concerning the default value!

Set the default value of the recordsource to select ALL (without WHERE) or maybe to SELECT none

... WHERE SomeIDField = 0
Avatar billede fdata Forsker
24. juli 2005 - 16:26 #28
Velbekomme. Det er det, vi er her for ;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
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