03. august 2006 - 17:08Der er
21 kommentarer og 2 løsninger
Søg flere varenumre
Hej, Jeg har følgende forespørgsel i min AccessDB: SELECT tblSalg.SelskabNr, tblSalg.KundeNr, tblbreve.VareNr, Sum(tblbreve.AntEnheder) AS Antal, Round(Sum(tblSalg.BruttoBeloeb),2) AS TotalBeloeb, tblProdukt.ProduktNavn FROM tblSalg INNER JOIN ((tblProdukt INNER JOIN tblOmkostninger ON tblProdukt.ProduktID = tblOmkostninger.Produkt) INNER JOIN tblbreve ON tblProdukt.ProduktID = tblbreve.VareNr) ON tblSalg.BrevNr = tblbreve.BrevNr GROUP BY tblSalg.SelskabNr, tblSalg.KundeNr, tblbreve.VareNr, tblProdukt.ProduktNavn, tblOmkostninger.ProduktOmk HAVING (((tblSalg.KundeNr)>"0")) ORDER BY tblSalg.SelskabNr, tblSalg.KundeNr DESC;
Den udvælger alle varenumre der findes og viser antal solgt og omsætning. Hvordan klarer jeg at få vist f.eks. de 3 af varenumrene hvis det kun er dem jeg vil se???
Jeg tænker på at jeg ville se nr. 610, 876 og 546 f.eks? Mvh
Sorry...min forklaring var ikke god nok :-( Jeg kan godt se hvad du mener, men hvad så hvis jeg vil have 3 andre? Så skifter jeg bare varenumre....men det skal jeg jo gøre på sql niveau. Det skal være i en brugervenlig udgave..så man sætter numre ind i et felt og klikker søg... Håber du forstår, og undskyld den dårlige forklaring.
No problem. I så fald kunne du oprette en tekstboks og lade brugeren taste varenumrene adskilt med komma. Ved kald af din form/rapport snupper du så indholdet af tekstboksen, splitter den via kommaerne, danner en streng med parametrene og smider denne ind i din SQL. Et hurtigt eksempel:
Sub HentVarenumre() Dim i As Integer Dim s As String Dim a Dim Krit As String
s = "123,456,789" ' <<< Denne værdi henter du fra dit indtastningsfelt a = Split(s, ",")
Debug.Print "------------" Krit = "HAVING (((tblSalg.KundeNr)>""0"")) AND ("
For i = 0 To UBound(a) Krit = Krit & "tblbreve.VareNr=" & a(i) If i <> UBound(a) Then Krit = Krit & " OR " Next i Krit = Krit & ")"
Debug.Print Krit ' Resultatet skal smides ind i Query strengen End Sub
Jeg håber, du kan se ideen.
Synes godt om
Slettet bruger
03. august 2006 - 21:50#4
God ide, jeg havde lige tænkt tanken: Sql injection...
og en lidt mere simpel udgave af dit svar (med simpel mener jeg egentlig klodset!~)
Fint. Selv om jeg ikke helt forstår, hvorfor du vælger en løsning, som du selv betegner som mere klodset; men du har jo nok dine grunde ;o) Husk at lukke spm.
Synes godt om
Slettet bruger
03. august 2006 - 22:14#6
Hov, lig lige mærke til signaturen!~)
Synes godt om
Slettet bruger
03. august 2006 - 22:22#7
Og nåh ja, klodset.... ideen var at lave et tekstfelt (evt. skjult), som skulle blive en del af sql strengen. Du har så et andet tekstfelt og en tilføj knap. I dette tekstfelt skriver man et nummer og trykker på tilføj, det bliver så overført:
if isnull(me.skjultFelt) then me.skjultFelt=me.indtastningsFelt else me.skjultFelt=me.skjultFelt & " OR " & me.indtastningsfelt end if
Ja da. Noget i den stil vil sikkert spille fint. Der er dog et mindre problem: Fortryd. Hvis brugeren taster forkert, kan kan/hun ikke se, hvad der er indtastet og må starte forfra.
Synes godt om
Slettet bruger
03. august 2006 - 22:33#9
Ja, det mest tjekkede ville nok være at have en listbox, som man opdaterer med de valgte tal, hvor man så har mulighed for at markere et tal og trykke på en "fjern" knap. For du har ret, der er ikke mulighed for at fortryde, kun ved hjælp af den clear funktion, der selvfølgelig er nød til at være et eller andet sted, så strengen ikke ender med at blive uendelig lang!~)
FYI: Du skal ikke oprette dine egne kommentarer som svar ;o)
Synes godt om
Slettet bruger
03. august 2006 - 23:00#12
fdata>er det ved at være sengetid!~)
Det er florint, som har oprettet spørgsmålet og undertegnede, som brød ind fordi jeg lige havde fået en lignende ide og var lettere imponeret over din kode!~) At jeg har lagt et svar er fordi at det kan være at florint, måske synes, at det var en lettere fremgangsmåde eller noget.... osv... under alle omstændigheder, så tror jeg kun der os to på linien...... eller.... Florint?~)
Hej Ja så er jeg stået op :-)....eller jeg burde måske gå i seng! Nej jeg må tilstå at det er lidt for avanceret til min formåen. Jeg er nødt til at have det penslet lidt mere ud, lidt ligesom....du skal indsætte den her, du skal oprette en et eller andet for at......osv. Giver gerne flere point hvis i synes. Dejligt med indlæg fra flere, og jeg kan se ud af det at i begge har rimeligt styr på dette. :-) Mvh
Synes godt om
Slettet bruger
04. august 2006 - 00:14#16
Jeg er vist også ved at være lidt kogt... hvis det ikke kører så er du velkommen til at zippe din db og maile den til spgeertz på hotmail, så ser jeg på det imorgen...
Hej spgeertz Har du glemt mig eller ikke modtaget DB? Ikke fordi jeg er utålmodig.... snarere spændt :-) Mvh
Synes godt om
Slettet bruger
06. august 2006 - 23:53#19
Undskyld, flere gange har jeg tænkt, nu skal jeg lige gå på og give en status, men jeg vil helst bare komme med løsningen. For nu har jeg opbygget en formular, som kan køre det. Men jeg kan ikke få den til at tage imod min sql, jeg har prøvet med globale variabler og alt muligt, men problemet er at få strengen i det pågældende tekstfelt, med i forespørgselsgitteret!~)
Jeg prøver lige lidt mere....
Synes godt om
Slettet bruger
07. august 2006 - 00:47#20
Det vil bare ikke som jeg vil... Nåh, jeg giver ikke op, men hvornår der er en løsning?~)
Bare nysgerrig: Hvis du omdanner Krit i min funtion til en global variabel, burde du kunne aflæse den med en funktion i stil med: Function HentKrit() As String HentKrit=Krit End Function Virker det ikke?
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.