19. februar 2019 - 01:09Der er
4 kommentarer og 1 løsning
Hvorfor kan jeg ikke hente værdi til forespørgsel fra den formular, hvor den er indlejret
Jeg har en formular med 3 tekstbokse, der baserer deres værdier på det valgte i hhv 1. ( der er bynavne ) boks 2 ( er områder i den valgte by ) boks 3 ( er biler i området i den valgte by)
men jeg har sat nogle kriterier op for visningen i boks 2, der skal kunne vise ALLE eller KUN "LUKKEDE" eller KUN "ÅBNE"
Alle = * Lukkede = *+2 Åbne = NOT like *2
Men hvis jeg angiver værdien i et tekstfelt på formularen og refererer til det i min forespøgsel virker det ikke, men skriver jeg det direkte i forspørgslen virker det... giver det mening ?`
lidt kode her ( denne virker IKKE efter hensigten)¨
SELECT tbl_cars_imported.Delebilsplads, Last(tbl_cars_imported.ByNavn) AS SidsteOfByNavn, Right([Delebilsplads],1) AS LastCharacter FROM tbl_cars_imported GROUP BY tbl_cars_imported.Delebilsplads, Right([Delebilsplads],1) HAVING (((tbl_cars_imported.Delebilsplads)=[Formularer]![Formular1]![SelectPoolType]) AND ((Last(tbl_cars_imported.ByNavn))=[formularer].[Formular1]![bynavn_001])) ORDER BY Right([Delebilsplads],1) DESC;
----- Denne viser de ÅBNE : ( Virker - men skrevet direkte i forespørgslen )
SELECT tbl_cars_imported.Delebilsplads, Last(tbl_cars_imported.ByNavn) AS SidsteOfByNavn, Right([Delebilsplads],1) AS LastCharacter FROM tbl_cars_imported GROUP BY tbl_cars_imported.Delebilsplads, Right([Delebilsplads],1) HAVING (((tbl_cars_imported.Delebilsplads) Not Like "*2") AND ((Last(tbl_cars_imported.ByNavn))=[formularer].[Formular1]![bynavn_001])) ORDER BY Right([Delebilsplads],1) DESC; ---
Der sker ikke nogen genparsning af sql udtryk ved vba udtryk referering - det betyder med andre ord at "sql maskinen" ikke begynder at grave efter sammenligningsoperatorer i [Formularer]![Formular1]![SelectPoolType])
Lad as tage et simplere eksempel: -------------------------------------------- En tabel Vare indeholder feltet navn
følgende forespørsel giver 1 post
select * from Vare where navn="popcorn"
Vi laver en vba function
function vbaExp() vbaExp="popcorn" end function
Denne anvendt således giver stadig samme ene post
select * from Vare where navn=vbaExp()
Vi ændre nu vbaExp til
function vbaExp() vbaExp="navn =""popcorn""" end function
når forespørgslen ændres til
select * from vare where vbaExp()
Vises ALLE poster!
Det eneste sql-engine kigger på er hvorvist vbaEXp() er sand eller falsk.
Alle poster function vbaExp() vbaExp=true end function Ingen poster function vbaExp() vbaExp=false end function ------------------------------------------
Man kan godt det du vil, martens, men så skal forespørgslen textuelt opbygges som streng før den gives til sql-engine
sub redefineQuery(qName,sqlText) on error resume next currentdb.querydefs.delete qName currentdb.createQueryDef qName,sqlTexr end sub (stavefejl kan forekomme)
og der skal noget requery event styring ind over fra formularen
fdata.. det med dropdown-værdierne fik mig i den rigtige retning ... Jeg prøvede at sætte værdierne ind en TEMP-tabel og lavede en DLOOKUP .. og vupti så kunne jeg se, hvor jeg "fejlede" ...
Jeg ændrede fluks værdierne til * (Alle) *2 (LUKKEDE) *MFM ( én type ÅBEN ) *LUP ( en anden type åben.. NU spiller det !!!
Endelig og fuldt ud funktionsdygtig kode :
SELECT tbl_cars_imported.Delebilsplads, Last(tbl_cars_imported.ByNavn) AS SidsteOfByNavn, Right([Delebilsplads],1) AS LastCharacter, Count(tbl_cars_imported.Delebilsplads) AS AntalOfDelebilsplads FROM tbl_cars_imported GROUP BY tbl_cars_imported.Delebilsplads, Right([Delebilsplads],1) HAVING (((tbl_cars_imported.Delebilsplads) Like [Formularer]![Formular1]![SelectPoolType]) AND ((Last(tbl_cars_imported.ByNavn))=[formularer].[Formular1]![bynavn_001])) OR (((tbl_cars_imported.Delebilsplads) Like [Formularer]![Formular1]![SelectPoolType_2]) AND ((Last(tbl_cars_imported.ByNavn))=[formularer].[Formular1]![bynavn_001])) ORDER BY Right([Delebilsplads],1) DESC;
Tak for hjælpen til alle bidragydere ! -----
Sidwave : ikke korrekt... jeg har siden min spæde start med MS Access engang midt i 90´erne benyttet mig af at kunne hente værdier fra formularer ... Det var her jeg opdagede det smarte med input i formularer, der kunne smides i queries ;o)
Synes godt om
Ny brugerNybegynder
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.