Avatar billede rookie44 Juniormester
20. oktober 2016 - 15:00 Der er 32 kommentarer og
1 løsning

SQL problem

Jeg har følgende, der giver mig problemer. Varenummer er alfanumerisk og leverandørnr et tal.
Sætning står på en linje


Set rstVare2 = mydb.OpenRecordset("SELECT * FROM [T_VareContraLev] WHERE [Varenummer] = '" & Me!Varenummer & "' AND [Leverandørnr] = " & rstVare!Levnummer & "'")
Avatar billede Rune1983 Ekspert
20. oktober 2016 - 15:04 #1
Prøv gem hele din SQL som en tekststreng og skriv den ud. Så finder man mange gange fejlen.
Avatar billede jensen363 Forsker
20. oktober 2016 - 15:05 #2
Hvad går problemet ud på ?
Avatar billede jensen363 Forsker
20. oktober 2016 - 15:15 #3
Reference til DAO måske ?
Avatar billede fdata Forsker
20. oktober 2016 - 15:18 #4
Fjern det sidste led:

Set rstVare2 = mydb.OpenRecordset("SELECT * FROM [T_VareContraLev] WHERE [Varenummer] = '" & Me!Varenummer & "' AND [Leverandørnr] = " & rstVare!Levnummer)
Avatar billede rookie44 Juniormester
20. oktober 2016 - 15:24 #5
Jeg har en henvisning til DAO.Recordset

Jeg får fejlen:
Der er en syntaksfel i strengen i forespørgselsudtrykket
"[Varenummer]='000-24' AND [Leverandørnr]=0'"
Avatar billede rookie44 Juniormester
20. oktober 2016 - 15:33 #6
fdata
Den giver fejlen:
Der er for få parametre. Der var forventet 1.
Avatar billede jensen363 Forsker
20. oktober 2016 - 15:43 #7
T_VareContraLev er det en fysisk fil/table eller en anden forespørgsel ?
Avatar billede rookie44 Juniormester
20. oktober 2016 - 16:50 #8
Det er en fysisk tabel (linked)
Avatar billede terry Ekspert
20. oktober 2016 - 17:22 #9
[Leverandørnr] = '"

think you need a '
Avatar billede terry Ekspert
20. oktober 2016 - 17:24 #10
you can see its missing here before the 0

AND [Leverandørnr]=0'"
Avatar billede rookie44 Juniormester
20. oktober 2016 - 18:09 #11
terry
if I use this

Set rstVare2 = mydb.OpenRecordset("SELECT * FROM [T_VareContraLev] WHERE [Varenummer] = '" & Me!Varenummer & "' AND [Leverandørnr] = " & rstVare!Levnummer)

I get the fail: Der er for få parametre. Der var forventet 1.
Avatar billede terry Ekspert
20. oktober 2016 - 23:39 #12
try putting sql inti a string and then copying the contents of the string into a query (sql)
Avatar billede rookie44 Juniormester
21. oktober 2016 - 09:14 #13
terry
OK, det prøver jeg
Avatar billede rookie44 Juniormester
21. oktober 2016 - 09:28 #14
terry, det giver flere fejlmeddelelser. Men jeg har fundet ud af at jeg er nødt til at læse dem ind enkeltvis og checke om de eksisterer i tabellen. Men tak for hjælpen til alle.
Avatar billede terry Ekspert
21. oktober 2016 - 09:48 #15
checke om de eksisterer ?

what exists? Of course you need to check that the variables contain data otherwise sql will fail
Avatar billede rookie44 Juniormester
21. oktober 2016 - 10:07 #16
Jeg skal checke om varenummer henholdvis leverandørnummer er oprettet i tabellen. Hvis ikke skal jeg på min formular have skrevet "Ej oplyst".
Tabellens felter er vort eget varenummer, leverandørnr og leverandørens varenummer, men det er ikke sikkert det er angivet for alle varer og leverandører.
Avatar billede terry Ekspert
21. oktober 2016 - 12:04 #17
why not us DCount function instead of an sql statement?
Avatar billede terry Ekspert
21. oktober 2016 - 12:10 #18
if leverandør/varenummer are in a separate table then you could make a query using outer join. And for those with no matching data you could just write "Ej Oplyst"
Avatar billede rookie44 Juniormester
21. oktober 2016 - 15:34 #19
terry
I don't know DCount.

Jeg har en formular (Varedata) hvor der bl.a. er felterne Varenummer og Leverandørnummer og Leverandørens varenummer. Jeg skal så have slået op i tabellen T_VareContraLev for at hente leverandørens varenummer, og sætte det ind i feltet Leverandørens varenummer, hvis Leverandørens varenummer ikke findes skal feltet Leverandørens varenummer udfyldes med "Ej oplyst".

Hvordan gør man det mest smartest?
Avatar billede terry Ekspert
21. oktober 2016 - 18:03 #20
not sure table/field names are correct but hope it gives some idea as to how you could do it

SELECT tblVare.Varenummer, tblVare.LevNummer, IIf(IsNull([LevVarenummer]),"Ej Oplyst",[LevVarenummer]) AS Expr1
FROM T_VareContraLev RIGHT JOIN tblVare ON (T_VareContraLev.Leverandørnr = tblVare.LevNummer) AND (T_VareContraLev.Varenummer = tblVare.Varenummer);
Avatar billede rookie44 Juniormester
21. oktober 2016 - 19:31 #21
terry
Det ser avanceret ud, men jeg prøver det. Skal det være som en mydb.Openrecordset(" SELECT.......?
Det ligner en SQL-sætning fra en forespørgsel. Er der ikke noget om at man kan køre en forespørgsel med en DoCmd Run?
Avatar billede terry Ekspert
22. oktober 2016 - 00:02 #22
Make a query with this as SQL:
If it gives correct result then use query in form
Avatar billede rookie44 Juniormester
22. oktober 2016 - 09:21 #23
OK, det prøver jeg
Avatar billede terry Ekspert
22. oktober 2016 - 09:54 #24
you will probably need to change table/field names in sql so they use yours
Avatar billede rookie44 Juniormester
22. oktober 2016 - 11:02 #25
terry
Jeg har det dårligt med en SQL sætninger. Så jeg har lavet noget i design visning, men jeg kan ikke indsætte et billede. Så jeg har prøver at sætte SQL teksten ind.


SELECT T_Varer.Varenummer, T_Varer.Levnummer, T_VareContraLev.Levvarenr, IIf(IsNull([Levvarenr]),"Ej Oplyst",[Levvarenr]) AS Udtryk1
FROM T_VareContraLev INNER JOIN T_Varer ON (T_VareContraLev.Varenr = T_Varer.Varenummer) AND (T_VareContraLev.Leverandørnr = T_Varer.Levnummer)
WHERE (((T_Varer.Varenummer)=[Forms]![Varedata]![Varenummer]) AND ((T_Varer.Levnummer)=[Forms]![Varedata]![Levnummmer]));

Hvordan Får jeg Udtryk1 sat ind i min formular Varedata i feltet Levvarenr2?
Avatar billede terry Ekspert
22. oktober 2016 - 17:30 #26
I doubt the sql will work. Your using an INNER join, so only records where there is related data in both tables will be in the result.

If you can send me an example of your dB then I can try and make an example.

ekspertenATsanthell.dk
AT = @
Avatar billede rookie44 Juniormester
22. oktober 2016 - 21:14 #27
Det er rigtig nok. Begge data skal være i begge tabeller.
I Varedata findes vores varenummer og et leverandørnummer, jeg vil så finde i tabellen T_Varecontralev om der er angiver et leverandørvarenummer for vores vare. Så når der et match og kun en eller ingen, skal leverandørvarenummer sættes ind i formularen varedata.
Vi kan jo godt kæbe vores vare hos en anden leverandør, men han har et andet leverandør varenummer.
Giver det mening?
Eller laver jeg en lille Db til dig.
Avatar billede terry Ekspert
22. oktober 2016 - 21:28 #28
Yes I think I understand what your after, but it would be much easier/faster if you could send an example. Busy with other things too ;-)

Off to see aq bi8t of TV so wont have time before tomorrow morning again..
Avatar billede terry Ekspert
23. oktober 2016 - 18:31 #29
I have sent dB return.
This sql will show all of your vare and related leverandør vare. If there are no related you will get "Ej oplyst" otherwise the levvarenr.
At the moment all of the fields on the form are unbound so I,m not sure how you intend using this in your form but it should be possible to use the query I made instead of a table as records source for the form. Then you will need to change the fields control source where you at the moment have this =[fsp_VareContraLev] to use Udtryk1 instead.

SELECT T_Varer.Varenummer, T_Varer.Levnummer, IIf(IsNull([Levvarenr]),"Ej Oplyst",[Levvarenr]) AS Udtryk1
FROM T_VareContraLev RIGHT JOIN T_Varer ON (T_VareContraLev.Varenr = T_Varer.Varenummer) AND (T_VareContraLev.Leverandørnr = T_Varer.Levnummer);
Avatar billede terry Ekspert
23. oktober 2016 - 18:32 #30
I wont be available again until earliest tomorrow evening
Avatar billede rookie44 Juniormester
24. oktober 2016 - 09:27 #31
terry
Du vælger et varenr i listen til højre og så skal formularen udfyldes.

Jeg har sat kontrolelement kilden for feltet Levvarenr2 (etiket Lev.varenr.) = [Udtryk1].
Men det giver stadig ikke noget.
Avatar billede rookie44 Juniormester
25. oktober 2016 - 10:08 #32
terry
Din løsning er fin. Den kan jeg bruge.
Avatar billede terry Ekspert
25. oktober 2016 - 10:51 #33
Super :-)
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