Lav din forespørgsel der bygger på den anden forespørgsel. Gå i Vis > SQL og du har din SQL-sætning. Denne kan du kopiere f.eks ind i en VBA, blot sørg for, at sætningen satår på een linie eller bind linierne sammen med _, fjern ; til sidst im SQL
Ja. Men hvis der er to foresp. hvor den ene bygger på den anden, hvordan skal den første så indsættes? Jeg er klar over, at den kan oprettet i designvisning og så kopieres ind i sql'en i den anden foresp. Men hvordan skriver man den ind?
Eksempel:
Første foresp.: SELECT Tabel1.*, Val(nz([Felt1])) & [Felt2] AS Felt3 FROM Tabel1;
Anden foresp.: (DET ER DENNEHER JEG ER I TVIVL OM!!!)
SELECT "SELECT Tabel1.*, Val(nz([Felt1])) & [Felt2] AS Felt3 FROM Tabel1" * FROM "SELECT Tabel1.*, Val(nz([Felt1])) & [Felt2] AS Felt3 FROM Tabel1"
Hvorfor ikke oprette forespørgslen dynamisk - men med fast navn - og så bruge den i din Forespørgsel2. Altså noget i stil med:
Call OpretQuery("Forespørgsel1","SELECT Tabel1.*, Val(nz([Felt1])) & [Felt2] AS Felt3 FROM Tabel1;")
Sub OpretQuery(Qnavn As String, Qsql As String) Dim Qdf As QueryDef SletQuery (Qnavn) Set Qdf = CurrentDb.CreateQueryDef(Qnavn) With Qdf .SQL = Qsql .Close End With Set Qdf = Nothing End Sub
Sub SletQuery(Qn As String) On Error Resume Next CurrentDb.QueryDefs.Delete Qn On Error GoTo 0 End Sub
Hej begge. Jeg forstår ikke jeres løsningsforslag, jeg er ikke så god til det her. Men jeg tror i bund og grund, det handler om notation. Altså hvis jeg har en foresp., der bygger på en anden, ville det se sådan her ud:
SELECT [Felt1] AS Felt2 FROM Foresp1;
Men hvis jeg ikke refererer til forespørgslen (Foresp1), men i stedet vil indsætte den, vil det så se sådan ud? (lad os sige at foresp1 ser sådan her ud: SELECT tabel1.* FROM tabel1)
sql = "SELECT [Felt1] AS Felt2 FROM & "SELECT tabel1.* FROM tabel1;";"
Gør nu livet let for dig selv ;o) Opret en forespørgsel i forespørgselsvinduet. Her kan du udvælge felter og inkludere dlookup'er osv. Når den forespørgsel er på plads, kan du vælge menupunktet Vis/SQL-visning. Så får du SQL udtrykket udleveret på et sølvfad. Det kan du så klippe ud og benytte i din VBA kode.
fdata> nej det kan jeg ikke. Hvis min foresp. bygger på en anden foresp. så står den anden forespørgsels navn der jo bare. Mit spørgsmål er egentligt ret enkelt. Hvordan inkluderer jeg så den anden forespørgsel?
Og ja den er også oprettet og gemt, så jeg bare kan sætte sql-koden ind i den første, men JEG VED IKKE HVORDAN. Der skal vel være nogle tegn rundt om den eller sådan noget ik?
Hvis vi nu forestiller os, at din første forespørgsel hedder Q1. Posterne herfra vil du gerne trække over i den næste forespørgsel, Q2.
Du siger, at Q2 allerede indeholder et link til Q1; men at opbygningen af Q1 skal ændres fra gang til gang.
Løsningen er som jeg beskrev allerede 27/10-2005 17:24:04: Du sletter den gamle Q1 og opretter en ny. Eks.: OpretQuery("Q1","SELECT Tabel1.* FROM Tabel1 WHERE X=1;") Eks.: OpretQuery("Q1","SELECT Tabel1.* FROM Tabel1 WHERE X=2;")
Herved vil Q2, som jo allerede refererer til Q1, se de nye poster. Eks.: SELECT Q1.* FROM Q1
Du skal altså ikke indsætte kode el.lign. i Q2, du skal bare fyre den af. Hele fidusen er, at du ændrer grundlaget dynamisk (altså Q1).
Q1 ligger altså som en "rigtig" forespørgsel (men ændres dynamisk) Q2 ligger kun i kode (og kalder Q1)
Ok det er mig, der ikke har fattet, hvad jeres svar går ud på, jeg var fastlåst i en tanke om at det handler om den rette sql-notation i VB. Jeg afprøver det, så snart jeg kan (har lige travlt med andre ting i disse dage), og vender tilbage.
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.