Avatar billede tni Juniormester
13. oktober 2003 - 10:44 Der er 20 kommentarer og
2 løsninger

forespøgesel som domain string

hej..

jeg har en forspørgsel som domain string.
Det virker perfekt.
Jeg vil gerne slette forspørgslen og så skrive den i hændelsen for at bevare overblikket men hvordan.
forspørgslen ser sådan nu.
Den hedder dobET

SELECT TBL_FF.FF_KredsløbNr
FROM (TBL_KUNDER INNER JOIN TBL_Installationer ON TBL_KUNDER.ID = TBL_Installationer.Kunde_ID) INNER JOIN TBL_FF ON TBL_Installationer.InstallationID = TBL_FF.ID_FF
WHERE (((TBL_KUNDER.ID)=[Formularer]![frmKundeOprettelse]![ID]));

Det her virker:
Private Sub txtET_BeforeUpdate(Cancel As Integer)

     

    If Not IsNull(DLookup("[ET]", dobET, "[ET]=txtET")) Then

jeg ville gerne skifte dobET ud med forspørgslen.

TNI
Avatar billede juks Novice
13. oktober 2003 - 10:57 #1
dim  ssql as string

ssql = SELECT TBL_FF.FF_KredsløbNr
FROM (TBL_KUNDER INNER JOIN TBL_Installationer ON TBL_KUNDER.ID = TBL_Installationer.Kunde_ID) INNER JOIN TBL_FF ON TBL_Installationer.InstallationID = TBL_FF.ID_FF
WHERE (((TBL_KUNDER.ID)=[Formularer]![frmKundeOprettelse]![ID]));



If Not IsNull(DLookup("[ET]", docmd.runssql ssql, "[ET]=txtET")) Then
13. oktober 2003 - 10:59 #2
Jeg er ikke helt med på hvad du vil....?
Vi du benytte SQL-strengen istedet for navnet på forespørgslen?

Juks, virker det??? Det skulle jeg da ikke tro?
Avatar billede juks Novice
13. oktober 2003 - 11:01 #3
ahh sorry ....
du skal bare udskifte dobET me navnet på forsprøgelsen også sætte "" omking
13. oktober 2003 - 11:03 #4
Tni->Jeg er ret sikker på, at du er nødt til at benytte en forespørgsel som domæne.
Alternativt skal du selv lave din DLookup vha recordsets:

Dim rs as ADODB.Recordset
Dim cn AS ADODB.Connection
DIM SQLStr as string
Set cn = Currentproject.Connection
Set rs = New ADODB.Recordset
SQLStr = "SELECT TBL_FF.FF_KredsløbNr
FROM (TBL_KUNDER INNER JOIN TBL_Installationer ON TBL_KUNDER.ID = TBL_Installationer.Kunde_ID) INNER JOIN TBL_FF ON TBL_Installationer.InstallationID = TBL_FF.ID_FF
WHERE (((TBL_KUNDER.ID)=[Formularer]![frmKundeOprettelse]![ID]));"
rs.Open "SQLStr", cn
rs.Find "ET = '" & txtET & "'"
if rs.EOF then
  ...
endif
13. oktober 2003 - 11:04 #5
btw: brug altid ordet "Forms" i stedet for "Formularer"
Avatar billede tni Juniormester
13. oktober 2003 - 11:31 #6
jeg får fejl når jeg skriver

If Not IsNull(DLookup("[ET]", docmd.runssql ssql, "[ET]=txtET")) Then
Avatar billede juks Novice
13. oktober 2003 - 11:34 #7
du skal bare udskifte dobET me navnet på forsprøgelsen også sætte "" omking
13. oktober 2003 - 11:37 #8
Syntaksen er:

If Not IsNull(DLookup("[ET]", "Navn på forespørgsel", "[ET]= '" & txtET & "'")) Then

Hvad er txtET? En variabel eller et felt?

/Thomas
Avatar billede tni Juniormester
13. oktober 2003 - 11:49 #9
Når jeg skifter navnet ud med "SQLet" (som jeg kalder den) siger den at den ikke kan finde forsspørslen.

Fejlen ligger i sql sætningen...men hvad?
SQLET = SELECT TBL_DL.ET FROM (TBL_KUNDER INNER JOIN TBL_Installationer ON TBL_KUNDER.ID = TBL_Installationer.Kunde_ID) INNER JOIN TBL_DL ON TBL_Installationer.InstallationID = TBL_DL.Inst_ID WHERE (((TBL_KUNDER.ID)=[Forms]![frmKundeOprettelse]![ID]));
Avatar billede juks Novice
13. oktober 2003 - 11:51 #10
hvorfor gemmer du den ikke som en forsprøgelse
13. oktober 2003 - 11:55 #11
du kan IKKE sætte en SQL-streng ind i en DLookup!!!

I stedet skal du benytte recordset-metoden, som jeg beskrev eller gemme forespørgslen og referere til dennes navn...
Avatar billede tni Juniormester
13. oktober 2003 - 12:02 #12
txtET er et tekstfelt i formularen

Opgaven går ud på at se om denne kunde har en ET men samme nummer inden man får lov til at skrive det nummer i feltet "txtET" tabellen kan have det samme nummer flere gange men kun een gang pr kunde.
Avatar billede juks Novice
13. oktober 2003 - 12:06 #13
hvorfor tjekker du så ikke bare direkte i tabellen med dlookup
13. oktober 2003 - 12:11 #14
Prøv denne:

Du laver en forespørgsel, som vi kalder "qryET"
herefter kan din kode se således ud:

Dim SQLStr As string
SQLStr = "SELECT TBL_FF.FF_KredsløbNr FROM (TBL_KUNDER INNER JOIN TBL_Installationer ON TBL_KUNDER.ID = TBL_Installationer.Kunde_ID) INNER JOIN TBL_FF ON TBL_Installationer.InstallationID = TBL_FF.ID_FF WHERE TBL_KUNDER.ID=" & Me![ID]

Currentdb.Querydefs("qryET").SQL = SQLStr
If Not IsNull(DLookup("[ET]", "qryET", "[ET]= '" & Me!txtET & "'")) Then
13. oktober 2003 - 12:12 #15
NB: Koden kræver en reference til Microsoft DAO 3.x object library

Denne sættes fra kodevinduet i menuen Tools->references
Avatar billede tni Juniormester
13. oktober 2003 - 12:20 #16
Så er jeg tilbage med en forspørgsel liggende under forespørgsler.

jeg tror jeg beholder den som jeg har. Da virker den godt.

tni
Avatar billede tni Juniormester
13. oktober 2003 - 12:21 #17
Tak for de godt ider
13. oktober 2003 - 12:23 #18
Ingen point????
Vi har dog svaret på dit spørgsmål!! Og er kommet med flere løsninger som er brugbare....bare fordi at du vælger ikke at bruge dem, så har du dog fået hjælp til at indse at din egen løsning var den bedste!!
Avatar billede tni Juniormester
13. oktober 2003 - 12:25 #19
Undskyld.

juks Skriv lige noget. Så deler i.
Avatar billede juks Novice
13. oktober 2003 - 12:26 #20
Point??
13. oktober 2003 - 12:27 #21
tak :o)
Avatar billede tni Juniormester
13. oktober 2003 - 12:29 #22
Ret skal være ret og der skal heller ikke være noget her.
Man skulle jo gerne kunne nødes igen.

Det var fordi jeg selv kom på listen da min tap var ligt hurtig som svar

tni
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