Avatar billede vanni Nybegynder
17. august 2003 - 19:37 Der er 14 kommentarer og
1 løsning

Syntax på SQL

Hej

Jeg har nogle recordset, hvor recordset3 bruger recordset2 og recordset2 bruger recordset1 o.s.v.

Spørgsmål: Hvad er syntaxen?

recordset2: SELECT bla, bla FROM bla, recordset1 WHERE bla bla

Jeg har testet konstruktionen med forespørgsler i forspørgsler, der virker 100%

Mvh. Vanni
Avatar billede terry Ekspert
17. august 2003 - 19:45 #1
vanni>Not sure what you are using recordset for, can you explain in more detail or evne better send the db to me and I will take a look.
eksperten@santhell.dk
17. august 2003 - 20:00 #2
Hvad mener du med "Bruger"? Mener du at en værdi i Recordset1 bruges som kriterie i Recordset2 osv?

I så fald, ser det nogenlunde sådan ud:

Dim rs1 as ADODB.Recordset
Dim rs2 as ADODB.Recordset
Dim rs3 as ADODB.Recordset
Dim cn as ADODB.Connection
Set cn = Currentproject.Connection
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
Set rs3 = New ADODB.Recordset

rs1.Open "Select * From Tabel1", cn
rs2.Open "Select * From Tabel2 Where [Felt1] = " & rs1![Felt1], cn
rs3.Open "Select * From Tabel3 Where [Felt2] = " & rs2![Felt2], cn
...
...
Avatar billede vanni Nybegynder
17. august 2003 - 20:13 #3
Hi Terry

It's rather complex, but I will try in English.

I have to use queries based on queries for use in nested loops.

Al I want is the syntax for this test code:

strSQL1 = "SELECT bla, bla
FROM bla
WHERE bla
Set db1 = CurrentDb
Set recordset1 = db1.OpenRecordset(strSQL1)

srtSQL2 = "SELECT bla, bla
FROM bla, recordset1
WHERE bla
Set db2 = CurrentDb
Set recordset2 = db2.OpenRecordset(strSQL2)

Mvh. Vanni
Avatar billede vanni Nybegynder
17. august 2003 - 20:15 #4
Hej Thomas

Nu får jeg nok smæk, men jeg bruger gammeldavs DAO ikke ADO. :o)

Mvh. Vanni
17. august 2003 - 20:20 #5
Gode gamle DAO er nu også klart den nemmeste at bruge....

Du kan ikke bruge Recordsets på præcis den måde, som du ønsker.
Hvorfor bruger du ikke bare skrive SQL'en, så de relevante tabeller indgår i næste recordset?
Avatar billede vanni Nybegynder
17. august 2003 - 20:23 #6
Thomas: Øhh "skrive SQL'en"?
17. august 2003 - 20:28 #7
Hvis du har fået det til at virke ved at lave flere forespørgsler, så kan du jo bare benytte disse forespørgsler som grundlag for dine recordsets:

Set recordset1 = db.Openrecordset("Forespørgsel1", dbopendynaset)
Set recordset2 = db.Openrecordset("Forespørgsel2", dbopendynaset)
...
...
Avatar billede terry Ekspert
17. august 2003 - 20:56 #8
Vanni why not make ONE SQL which contains a SUB select

SELECT *, (SELECT fld FROM tbl2 AS T2 WHERE T2.ID = T1.ID) AS SomeField
FROM tbl1 AS T1
WHERE bla

Or something like that
Avatar billede vanni Nybegynder
17. august 2003 - 21:42 #9
Terry: I wrote this:

strSQL1 = "SELECT bla, bla;"

strSQL2 = "SELECT *, ( " & strSQL1 & " ) AS SomeField " _
& "FROM tbl1 AS T1 " _
& "WHERE bla; "

strSQL3 = "SELECT *, ( " & strSQL2 & " ) AS SomeField " _
& "FROM tbl1 AS T1 " _
& "WHERE bla; "

etc.

I can have it work this way. I'll just have to remove the semicolons from strSQLx.

Does that seem ok?
Avatar billede terry Ekspert
17. august 2003 - 21:48 #10
vanni, if you can give an example of your tables, fields and relationships, and what you are expecting from the result then it may be easier to give an example.
Avatar billede vanni Nybegynder
17. august 2003 - 21:57 #11
Terry: I am using "17/08-2003 21:42:44" and it is working fine. I just wanted your good old trained "SQL-eyes" to look at it and maybe make a remark.
Avatar billede terry Ekspert
17. august 2003 - 22:01 #12
Sorry, I wasnt sure if you meant that it was working or you were asking me if it looked OK!
Well if it works then thats just great :o)
No easy to see from here with bla, bla and all that :o)

Can you not paste strSQL3 here so we can see what it looks like?
Avatar billede terry Ekspert
17. august 2003 - 22:02 #13
If its working then you could actually paste it into a query and use the query instead of the SQL!
Avatar billede vanni Nybegynder
17. august 2003 - 22:19 #14
17/08-2003 22:01:14 - It was only a question about the syntax and principles.

Thomas: Jeg prøvede dit forslag og jeg tror også det kunne lade sig gøre, men jeg vil hellere bruge sub-sql.

I'll have to incorporate the strSQl in nested loops and will have read values and update fields according different conditions.

17/08-2003 22:02:26 - Yes I can, but I have to remove the semicolons.

Thanks for your help
Avatar billede terry Ekspert
17. august 2003 - 22:23 #15
selv tak!
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