Avatar billede phi-del Nybegynder
16. marts 2005 - 08:56 Der er 26 kommentarer og
1 løsning

Do While Not rms.EOF ?

Hej til alle.

Jeg er ret ny i det her vb, og er stødt ind i en problem.
Jeg har lavet en funktion i min kode som hedder "Skriv" denne skriver bare tingene ud i en tekstfil. men problemmet er at jeg vil have tinge udskrivet på et bestemt måde, feks. findes der et
felt i db som hedder bil_nr, denne vil jeg kune have skrevet ud
engang og ikke flere gange som den gøre med denne kode:

VbKode :
Do While Not rms.EOF
  Udskriv "Bil_nr", rms.Fields![Bil_nr]
 
  rms.MoveNext
Loop

jeg skal stadige igennem hele tabelen og udskrive alle de felter der hedder bil_nr men den må ikke skrive samme bil nr flere gange.


eks. på Database:

Bil_nr    navn    km    leje .........
  2      mazda    152    456
  2      mazda    153    478
  1      mazda    234    123
  3      suziki  342    345
  3      super    345    412
osv......................



er der nogen der har en løsning til dette, (db kan ikke ændres) ?
16. marts 2005 - 09:10 #1
I den linie, som definere hvilken tabel, rms er knyttet til (der er flere forskellige syntakser), kan du erstatte tabelnavnet med en SQL streng:

eks:
rms.Open "Select Distinct Bil_Nr from [Din tabel]", ......


Derved får du kun bil_nr med i recordsettet og Distinct gør så, at hver post (bil_nr) kun kommer med én gang.
Avatar billede terry Ekspert
16. marts 2005 - 09:11 #2
The reason why it shows Bil_nr two times is because there are two records! Do you only want to show one record or this?

Bil_nr    navn    km    leje .........
  2      mazda    152    456
        mazda    153    478
  1      mazda    234    123
  3      suziki  342    345
        super    345    412
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:16 #3
til terry.
ja det er rigtigt, bil_nr fremkommer flere gange i databasen, men når jeg skrive den må ikke skrive samme bil nr flere gange.
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:22 #4
rms.Open "Select Distinct Bil_Nr from [Din tabel]",
den visser stadige det samme
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:24 #5
jeg kan ikke få det her til at virke :

rms.Open "Select Distinct Bil_Nr from [Din tabel]",
16. marts 2005 - 09:29 #6
nej, sætningen skal også være længere.

Hvordan så koden ud til at starte med? Hvordan erklærede du rms?
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:30 #7
det er her jeg definere min rms :
Set rms = qms.OpenRecordset()
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:31 #8
Set qms = dbs.CreateQueryDef("", strSQL)
Set rms = qms.OpenRecordset()
16. marts 2005 - 09:32 #9
kan du ikke bare paste hele koden?
Jeg mangler stadig hvordan du definerer strSQL
Det er nemlig den, som du skal erstatte.
16. marts 2005 - 09:37 #10
Så der hvor du definerer strSQL skal du erstatte udtrykket med mit forslag:

strSQL = "Select Distinct Bil_Nr from [Din tabel]"

[Din tabel] skal selvfølgelig også erstattes med navnet på din tabel
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:38 #11
strSQL = "SELECT  * " & _
            "FROM Biller " & _
            " WHERE ((stelnr)=" & Forms![stel]![stelnr] & ") "


    Set qms = dbs.CreateQueryDef("", strSQL)
    Set rms = qms.OpenRecordset()

    If Not rms.EOF Then rms.MoveFirst

    Do While Not rms.EOF
               
              skriv "Bil_nr", rms.Fields![Bil_nr]
              Skriv "Klasse", rms.Fields![Klasse]
              Skriv "navn", rms.Fields![navn]
              Skriv"km", rms.Fields![km]
              Skriv"leje", rms.Fields![leje]
           
  rms.MoveNext
Loop



men det er kun bil_nr der skal være distinct de andre må den gerne skrive det samme flere gange hvis det fremkommer i databasen
Avatar billede terry Ekspert
16. marts 2005 - 09:44 #12
Dim lastBilNr

strSQL = "SELECT  * " & _
            "FROM Biller " & _
            " WHERE ((stelnr)=" & Forms![stel]![stelnr] & ") "


    Set qms = dbs.CreateQueryDef("", strSQL)
    Set rms = qms.OpenRecordset()

    If Not rms.EOF Then rms.MoveFirst

    LastBilNr = rms.Fields![Bil_nr]
   
Do While Not rms.EOF
               
              If rms.Fields![Bil_nr] <> LastBilNr Then
                skriv "Bil_nr", rms.Fields![Bil_nr]
              end if
              LastBilNr = rms.Fields![Bil_nr]
              Skriv "Klasse", rms.Fields![Klasse]
              Skriv "navn", rms.Fields![navn]
              Skriv"km", rms.Fields![km]
              Skriv"leje", rms.Fields![leje]
           
  rms.MoveNext
Loop
16. marts 2005 - 09:45 #13
okay, så er det en helt anden situation. Jeg fik indtryk af, at du KUN ville skrive bil_nr.
Ja, så kan du ikke bruge min kode alligevel, men terry er inde på noget af det rigtige her :o)
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:56 #14
til terry :
bil_nr fremkommer stadige flere gange
Avatar billede phi-del Nybegynder
16. marts 2005 - 09:56 #15
og grund til dette er at de andre data kommer flere gange, som også skal.
men bil_nr kommer flere gange
Avatar billede phi-del Nybegynder
16. marts 2005 - 10:01 #16
okay, der findes to bil_nr 1150 og 1165
men nu visser den kun 1150
Avatar billede terry Ekspert
16. marts 2005 - 10:03 #17
Try this SQL and the same code I gave previously

strSQL = "SELECT  * " & _
            "FROM Biller " & _
            " WHERE ((stelnr)=" & Forms![stel]![stelnr] & ") ORDER BY [Bil_nr]"
Avatar billede terry Ekspert
16. marts 2005 - 10:04 #18
this makes sure that the same Bil_nr come together, then the code should work.

But really, it all depends on what you want to see, can you give an example?
Avatar billede phi-del Nybegynder
16. marts 2005 - 10:09 #19
men nu visser den kun bil_nr 1165
men datane for bil_nr 1150 kommer også men selve bil_nr1150 dukker ikke op
og det er sådan at den udskriv i række følgen af klasse dvs. klasse 1 klasse2 osv.
nu starter den med klasse 9 osv......
Avatar billede terry Ekspert
16. marts 2005 - 10:15 #20
is it possible for you to send me your database so I can see the whole picture?
eksperten@NOSPAMsanthell.dk
remove NOSPAM
Avatar billede terry Ekspert
16. marts 2005 - 10:16 #21
Can you give an example of the data AND of what you want to see? This is VERY important!
Avatar billede phi-del Nybegynder
16. marts 2005 - 10:23 #22
problemmet skal vist løses i denne ende

If rms.Fields![Bil_nr] <> LastBilNr Then
  skriv "Bil_nr", rms.Fields![Bil_nr]
end if

for denne sætning går over i end if i første loop og i anden loop kører den fint
Avatar billede phi-del Nybegynder
16. marts 2005 - 10:23 #23
så den skal også være sandt i første kørsel
Avatar billede terry Ekspert
16. marts 2005 - 10:29 #24
I cant say if this is correct as I dont know what you want!
Avatar billede terry Ekspert
16. marts 2005 - 10:31 #25
ah!
Try
Dim lastBilNr

strSQL = "SELECT  * " & _
            "FROM Biller " & _
            " WHERE ((stelnr)=" & Forms![stel]![stelnr] & ") "


    Set qms = dbs.CreateQueryDef("", strSQL)
    Set rms = qms.OpenRecordset()

    If Not rms.EOF Then rms.MoveFirst

    LastBilNr = ""
   
Do While Not rms.EOF
               
              If rms.Fields![Bil_nr] <> LastBilNr Then
                skriv "Bil_nr", rms.Fields![Bil_nr]
              end if
              LastBilNr = rms.Fields![Bil_nr]
              Skriv "Klasse", rms.Fields![Klasse]
              Skriv "navn", rms.Fields![navn]
              Skriv"km", rms.Fields![km]
              Skriv"leje", rms.Fields![leje]
           
  rms.MoveNext
Loop
Avatar billede phi-del Nybegynder
16. marts 2005 - 10:54 #26
supper tussind tak for hjælpen. nu skal jeg bare rette nogle andre fejl som denne har medført men det skulle være nemt, det var det her der gav mig meget hovedpine .

takker igen for hjælpen :)
Avatar billede terry Ekspert
16. marts 2005 - 11:06 #27
selv tak
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
Kurser inden for grundlæggende programmering

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