Avatar billede florint Nybegynder
03. august 2006 - 17:08 Der 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
Avatar billede fdata Forsker
03. august 2006 - 20:28 #1
...
HAVING (((tblSalg.KundeNr)>"0")) AND (tblbreve.VareNr=610 OR tblbreve.VareNr=876 OR tblbreve.VareNr=546)
...
Avatar billede florint Nybegynder
03. august 2006 - 21:32 #2
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.
Avatar billede fdata Forsker
03. august 2006 - 21:46 #3
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.
Avatar billede 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!~)
Avatar billede fdata Forsker
03. august 2006 - 22:06 #5
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.
Avatar billede Slettet bruger
03. august 2006 - 22:14 #6
Hov, lig lige mærke til signaturen!~)
Avatar billede 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


og så i sql-strengen:

HAVING (((tblSalg.KundeNr)= me.skjultfelt))

man må da kunne gøre noget i den retning!~)
Avatar billede fdata Forsker
03. august 2006 - 22:28 #8
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.
Avatar billede 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!~)
Avatar billede fdata Forsker
03. august 2006 - 22:38 #10
Nemlig. Eller en mellemting, som jeg skitserede. Her kan brugeren bare rette eller slette et nummer.
Avatar billede fdata Forsker
03. august 2006 - 22:40 #11
FYI: Du skal ikke oprette dine egne kommentarer som svar ;o)
Avatar billede 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?~)
Avatar billede fdata Forsker
03. august 2006 - 23:10 #13
Doh ! Havde fuldstændig overset det. Jeg går lige ud og skyller hjernen og kryber i køjen.
PS: Tak for roserne. Godnat  ;o]
Avatar billede Slettet bruger
03. august 2006 - 23:35 #14
!~)
Avatar billede florint Nybegynder
03. august 2006 - 23:45 #15
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
Avatar billede 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...
Avatar billede florint Nybegynder
04. august 2006 - 13:57 #17
sendt i morges.
Mvh
Avatar billede florint Nybegynder
06. august 2006 - 18:34 #18
Hej spgeertz
Har du glemt mig eller ikke modtaget DB?
Ikke fordi jeg er utålmodig.... snarere spændt :-)
Mvh
Avatar billede 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....
Avatar billede 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?~)
Avatar billede fdata Forsker
08. august 2006 - 17:55 #21
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?
Avatar billede florint Nybegynder
26. september 2006 - 08:54 #22
I deler for ulejligheden. Har ikke fået det løst her så jeg dropper det og lukker.
Avatar billede fdata Forsker
26. september 2006 - 11:40 #23
Surt; men tak for point
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