Avatar billede ferdinand.k Mester
16. juni 2004 - 11:51 Der er 19 kommentarer og
1 løsning

frasortering af records

Jeg har en form med 650 poster der indeholder de faste data som kundenummer, firmanavn, adresse osv. Ligeledes har jeg en underform som indeholder en record for hver ubetalt regning. De to forms er bundet sammen ved kundenummeret.
Mit problem består i at jeg ikke ønsker at se alle 650 poster hvis der ikke er nogle ubetalte regninger ved den enkelte kunde. Derfor ønsker jeg at ved indgang til formen, at sortere alle de poster fra, der ikke har nogle ubetalte regninger... håber det er gjort forståeligt...
16. juni 2004 - 11:54 #1
Forespørgslen til hovedformularen skal se således ud:

Select * From [tblKunder] Where kundenummer Not In (Select Kundenummer From [tblUbetalteRegninger])
Avatar billede overchord Nybegynder
16. juni 2004 - 12:01 #2
Du kan evt basere din formular paa en forespoergelse saa

SELECT * FROM Kunder INNER JOIN Regninger ON kunder.kundenummer = regniner.kundenummer WHERE regninger.status = "ubetalt"
16. juni 2004 - 12:13 #3
Hvis tabellen Regninger indeholder både betalte og ubetalte regninger, skal min SQL ændres til:
Select * From [tblKunder] Where kundenummer Not In (Select Kundenummer From [tblRegninger] Where Betalt is Null)

Kriteriet i sub-select'en afhænger selvfølgelig af hvordan din tabel ser ud....
Avatar billede ferdinand.k Mester
16. juni 2004 - 12:24 #4
kan jeg ikke bruge et filter istedet for at basere det hele på en ny forespørgesel? eller evt lave noget sql-kode på formen, der sorterer??
16. juni 2004 - 12:26 #5
Du kan godt lægge filter på ved Form_Load:

Me.Filter = "Kundenummer Not In (Select Kundenummer From [tblRegninger] Where Betalt is Null)"
Me.Filteron = true
16. juni 2004 - 12:28 #6
Hvordan registrerer du om en regning er betalt eller ej?
Avatar billede ferdinand.k Mester
16. juni 2004 - 12:42 #7
Det gør jeg i en forespørgesel som bygger på den foresprøgesel jeg omtaler her. Dvs det skal der ikke tages højde for her!
Avatar billede ferdinand.k Mester
16. juni 2004 - 13:00 #8
thomas - den staller når jeg kaster filter-koden ind på formen.
16. juni 2004 - 13:07 #9
hvordan ser hele proceduren ud?
Avatar billede ferdinand.k Mester
16. juni 2004 - 13:26 #10
Private Sub Form_Open(Cancel As Integer)
Me.Filter = "kundenr Not In (Select kundenr From [Q_IkkeBetalte])"
Me.FilterOn = True
End Sub
16. juni 2004 - 13:28 #11
ah, det skulle jo også være på Form_LOAD (ikke form_open, da den eksekveres for tidligt)
Avatar billede ferdinand.k Mester
16. juni 2004 - 13:31 #12
ahh... nu siger den godt nok at der er fejl i hændelsesproceduren...
16. juni 2004 - 13:32 #13
hvilken fejl?
Avatar billede ferdinand.k Mester
16. juni 2004 - 13:54 #14
nu bliver siden loaded rent grafisk, men når den skal udføre de sidste beregninger, kører den hele processbaren igennem og stopper bare der!

Private Sub Form_Load()
Me.Filter = "kundenr Not In (Select Kundenr From [Q_IkkeBetalt])"
Me.FilterOn = True
End Sub

Det virker lidt som om filter-funktionen er ufatteligt langsom. Er dette tilfældet? Er det bedre at basere hele skidtet på en ny forespørgesel, som i begge nævnte indledningsvist!?
16. juni 2004 - 14:01 #15
Hvis datamængderne er store eller hvis tabeller ikke er indekseret eller hvis Q_IkkeBetalt ikke er optimeret korrekt, så kan det godt tage tid. Især hvis formularen er sorteret ved opstart - så skal denne sortering foretages 2 gange.

Der er flere ting, som spiller ind. Det er svært at svare eksakt på, når jeg ikke kender dit system
Avatar billede lenton Nybegynder
18. juni 2004 - 12:20 #16
Er
select * from a where b not in (select c from d)
i øvrigt ikke ekstremt buggy/skrøbelig? Jeg har brugt den nogle dage med succes og efter jeg nu legede lidt med primary keys på de involverede tabeller og sat dem tilbage til samme indstillinger som før virker det pludselig ikke! Oi jeg er ved at være træt af Access!
18. juni 2004 - 12:24 #17
select * from a where b not in (select c from d) er en god struktur, da den ikke piller ved din oprindelige select - kun på kriteriet.

Hvis du ændre på de unikke felter, skal du selvfølgelig sørge for at forespørgslen stadig arbejder med de rigtige felter...dette ville også gælde selvom du benytter joins i din forespørgsel.
Avatar billede lenton Nybegynder
18. juni 2004 - 12:27 #18
jo, men alt jeg gjorde var blot at tilføje en primary key og fjerne den igen, tabllen er fuldstændig identisk hvad angår struktur og data i forhold til før, men pludselig giver forespørgslen ingen resultater!
18. juni 2004 - 13:12 #19
Lenton-> det kan jeg ikke give forklaring på. Jeg har ikke selv oplevet den slags problemer...

Ferdinand-> fik du løst dit problem?
Avatar billede ferdinand.k Mester
18. juni 2004 - 13:19 #20
nej, ikke helt... Jeg synes nu at den ekstra select hiver hastigheden HELT enormt ned. Det tog 4 sekunder at udføre den gamle beregning, nu tager det omkring 30 sek... :(
Jeg forsøger stadig at finde en alternativ løsning.

Hvis jeg benytter et filter, tager det endnu længere tid, dog virker begge metoder helt perfekt...
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