Avatar billede vb-wanna-b Nybegynder
27. november 2003 - 13:13 Der er 13 kommentarer og
3 løsninger

SQL query Vs SQL i vba

Jeg har lavet et statement der ser ud som følger
SELECT SerieNr
FROM table1
WHERE felt1 IN (SELECT felt1 FROM  table2  WHERE felt2 = '0200');
jeg får den ene værdi jeg søger så¨det er fint nok, men overfører jeg den til vba i access2k hvor jeg mener den skal se ud som neden for:

Dim strSQL As String
Dim test As String
test = "0200"
Dim strDocName As String

    strDocName = "rpt_name"

strSQL = "SELECT SerieNr FROM table1 WHERE felt1 IN (SELECT felt1 FROM  table2  WHERE felt2 = test)"

    DoCmd.OpenReport strDocName, acViewPreview, , table1.felt1 = strSQL

der skriver den Object required....
hvordan kan det være?
Avatar billede vb-wanna-b Nybegynder
27. november 2003 - 13:15 #1
Select SerieNr skal rettes til Selecet felt1 i begge eksempler
Avatar billede mugs Novice
27. november 2003 - 14:15 #2
Prøv at rette:

strSQL = "SELECT SerieNr FROM table1 o.s.v.

til

DoCmd.RunSql "strSQL = "SELECT SerieNr FROM table1 o.s.v."
Avatar billede vb-wanna-b Nybegynder
27. november 2003 - 14:21 #3
den laver ikke compile fejl, men jeg får en fejl når jeg kører scriptet.
En ugyldig SQL sætning...Delete, insert, procedure eller select var ventet
Avatar billede vb-wanna-b Nybegynder
27. november 2003 - 14:26 #4
DoCmd.RunSQL strSQL = "SELECT Felt1 FROM table2 WHERE Felt1 IN (SELECT Felt1 FROM  table1  WHERE felt2 = '0200')"

    DoCmd.OpenReport "rpt_navn, acViewPreview, , "WHERE table2.Felt1 = strSQL"
Avatar billede mugs Novice
27. november 2003 - 15:11 #5
Nu tænker jeg da også med r.... :

DoCmd.RunSql "SELECT SerieNr FROM table1 o.s.v."

Men det hjælper sikkert ikke, da du jo ønsler at åbne en rapport med det kriterie du har i din sreSQL
Avatar billede vb-wanna-b Nybegynder
27. november 2003 - 15:19 #6
det er netop det der er problemet for selve sql sætningen virker fint, men den/de værdier skulle gerne smides ind i openReport sætningen som where clause, og det kan jeg simpelthen ikke få den til..
Avatar billede terry Ekspert
27. november 2003 - 20:21 #7
vb-wanna-b>Does your nested SQL (SELECT Felt1 FROM  table1  WHERE felt2 = '0200')
return ONE value or can it return more than one?
If it only returns one value then use the dlookup function


DoCmd.OpenReport "rpt_navn", acViewPreview, , "table2.Felt1 = " & Dlookup("Felt1", "table1", "Felt2 = '0200'")

or something like that
Avatar billede vb-wanna-b Nybegynder
28. november 2003 - 08:35 #8
i can return 1 or more values, usaualy more than one
Avatar billede terry Ekspert
28. november 2003 - 18:04 #9
I am sure it is possible to use the WhereCondition parameter but it sis obvioulsy important that the SQL is correct. If must NOT start with WHERE tahts for sure!
Avatar billede vb-wanna-b Nybegynder
01. december 2003 - 08:48 #10
I have testet the SQL i query mode, and it can return more than one entry, the nested SQL I made to begin with that is. But I cannot get the open report to accecpt the one+ values I get in the sql statement
Avatar billede terry Ekspert
01. december 2003 - 18:15 #11
which one?
Avatar billede vb-wanna-b Nybegynder
01. december 2003 - 21:44 #12
SELECT felt1
FROM table1
WHERE felt1 IN (SELECT felt1 FROM  table2  WHERE felt2 = '0200');
(in access query mode. It is the query I base my OpenReport from)
that I made to begin with, but it looks like the nested SQL will not funktion in the OpenReport sentence
Avatar billede terry Ekspert
02. december 2003 - 17:58 #13
can you not use?
"felt1 IN (SELECT felt1 FROM  table2  WHERE felt2 = '0200')"
Avatar billede vb-wanna-b Nybegynder
02. december 2003 - 23:46 #14
that works fine in query mode, it is the same as in my previous post...It gives the same result anyway, I want the filtered result in table2 to be the values of the records in table1 to be processed in the report...it late..so that might sound wierd.... I thougt of something that im going to try on for size tomorrow - I´ll let you know what that turnes out like..
this is what Im going to test:
DoCmd.OpenReport strDocName, acViewPreview, ,
("SELECT support.SerieNr
FROM support
WHERE support.SerieNr = (SELECT SerieNr FROM IT_tilmeld WHERE AfdNr LIKE ' " & test & "'" ))
Avatar billede vb-wanna-b Nybegynder
03. december 2003 - 09:40 #15
ok, I finaly found a way to solve it. If I define a filter criteria based on my SQL  as a string and include that in the openreport sentence and leave out the where clause completely, it works, once again the solution presented it self right under my nose, only this time I managed to see it...
Avatar billede vb-wanna-b Nybegynder
03. december 2003 - 09:41 #16
point til alle der hjalp med inspiration :-)
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