Avatar billede nyholm Novice
20. september 2007 - 12:09 Der er 18 kommentarer og
1 løsning

Finna saknade tal

Jag vill skapa en fråga som finner saknade tal i en talserie i nummerføljd.
Låt sæga att talserien løper från 25 till 55 och talen 30, 36, och 40 saknas. Hur skall jag gøra før att hitta dessa saknade tal och få upp dessa i en fråga?
Avatar billede ffsoft Praktikant
20. september 2007 - 14:36 #1
for iX  = 25 to 55
  if ix = rst("nr") then
  ' Hit. DoNothing
  else
  strMissing = strMissing & rst("Nr") & ";"
  end if
next


Dette vil give en streng der indeholde de manglende numre adskilt
af semikolon. Det er IKKE testet.
Avatar billede nyholm Novice
20. september 2007 - 16:22 #2
Jag førsøker køra din kod med
For ix = DMin("KollKvitt", "KollKvitto", "TAXINR = Forms.Importera.Taxi") To
          DMax("KollKvitt", "KollKvitto", "TAXINR = Forms.Importera.Taxi")
men får kompileringsfel med ix som odefinierad variabel.
Avatar billede jesperfjoelner Nybegynder
20. september 2007 - 16:56 #3
Hvis feltet forms.importera.taxi er et tal:
For ix = DMin("[KollKvitt]", "KollKvitto", "[TAXINR] = " & Forms.Importera.Taxi) To
          DMax("[KollKvitt]", "KollKvitto", "[TAXINR] = " & Forms.Importera.Taxi)

og hvis det er et tekstfelt:
For ix = DMin("[KollKvitt]", "KollKvitto", "[TAXINR] = '" & Forms.Importera.Taxi & "'") To
          DMax("[KollKvitt]", "KollKvitto", "[TAXINR] = '" & Forms.Importera.Taxi & "'")
Avatar billede nyholm Novice
20. september 2007 - 17:07 #4
KollKvitto ær en urvalsfråga som listar alla kvittonr i fæltet KollKvitt før taxibilen med taxinr=Forms.Importera.Taxi.
Jag vill alltså hitta de kvittonr som saknas mellan DMin och Dmax.
Avatar billede jesperfjoelner Nybegynder
21. september 2007 - 10:12 #5
Skal det være i en urvalsfråga eller vil du have det som en tekststreng?
Avatar billede nyholm Novice
21. september 2007 - 14:08 #6
Jag vill helst ha svaret i en fråga.
Avatar billede ffsoft Praktikant
22. september 2007 - 11:07 #7
Function FindLedigeTal(intStart As Integer, intSlut As Integer)
'*******************
' Finder ledige numre og afleverer
' resultatet som en streng
'
' Rettet 22-09-2007
'*******************
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strSQL As String
Dim strLedige As String
Dim iX As Integer

Set conn = CurrentProject.Connection
Set rst = New ADODB.Recordset

For iX = intStart To intSlut
strSQL = "SELECT Nummer FROM tblNummer Where Nummer = " & iX & ";"
'MsgBox strSQL
rst.Open strSQL, conn
If rst.BOF And rst.EOF Then
    ' No hit
    strLedige = strLedige & iX & ";"
    Else
    ' Hit
End If
rst.Close
Next
Set rst = Nothing
conn.Close
Set conn = Nothing

FindLedigeTal = strLedige
End Function
Avatar billede ffsoft Praktikant
22. september 2007 - 11:09 #8
Funktionen modtager et start og et slut nummer og afleverer en semikolon separeret streng.

Tabellen hedder tblNummer og indeholder feltet nummer.
Avatar billede ffsoft Praktikant
22. september 2007 - 11:09 #9
Sub cmd01_Click()
'*******************
' Finder ledige numre i en serie
' og skriver dem til en tabel
'
' Rettet 22-09-2007
'*******************
Dim conn As ADODB.Connection
Dim strSQL As String
Dim arrLedige
Dim iX As Integer

Set conn = CurrentProject.Connection

' Kald til funktionen FindLedigeTal() resultatet
' lægges i et array
arrLedige = Split(FindLedigeTal(25, 55), ";")

' Arrayet lægges i en tabel
For iX = 0 To UBound(arrLedige) - 1
    strSQL = "INSERT INTO tblLedigtNummer(Nummer) Values(" & arrLedige(iX) & ");"
    'MsgBox strSQL
    conn.Execute strSQL
Next

conn.Close
Set conn = Nothing

End Sub
Avatar billede jesperfjoelner Nybegynder
22. september 2007 - 11:11 #10
Fin løsning. Jeg har også kun kunnet få det til at fungere ved at lave en tekststreng med semikolonsepererede tal. Det er lidt omstændigt, men det virker. Fin løsning.
Avatar billede ffsoft Praktikant
22. september 2007 - 11:12 #11
Ved et klik på en knap laves et kald til funktionen FindLedigeTal() og den returnede tekststreng lægges i et array ved hjælp af funktionen Split().
Arrayet gennemløbes og data overføres til en tabel ved navn tblLedigtNummer der har et felt der hedder nummer.
Avatar billede ffsoft Praktikant
22. september 2007 - 11:18 #12
jesperfjoelner:

Mjaeh, man kunne jo godt have lavet det som en funktion der lægger værdien af iX i en tabel, når der er et hul i nummerserien. Så havde man undgået teksstrengen og arrayet, men det var blevet sværere at læse og forstå. Tror jeg.
Avatar billede nyholm Novice
27. september 2007 - 19:20 #13
Hej ffsoft!
Jag har varit upptagen med annat och inte kunnat testa ditt førslag førræn nu.
Jag får ett kompileringsfel på Dim conn As ADODB.Connection med meddelandet :
"Egendefinierad typ har inte definierats". Vad ær galet?
Avatar billede nyholm Novice
27. september 2007 - 19:39 #14
Jag kanske skulle tillægga att kompileringsfelet kommer i functionen FindLedigeTal().
Avatar billede jesperfjoelner Nybegynder
27. september 2007 - 19:40 #15
Løsningen er lavet til ADO og ikke til DAO.

Under Tools > Referencer skal du have kryds i Microsoft ADO 2.6 (eller lignenden)
Måske kan eksemplet laves i DAO i stedet, så du undgår en ny reference i databasen.
Avatar billede nyholm Novice
27. september 2007 - 19:50 #16
Jag har kryssat i Microsoft ADO 2.8 for DDL and Security, men får samma kompileringsfel.
Avatar billede ffsoft Praktikant
27. september 2007 - 21:42 #17
Hvilken version af Access bruger du?? Det er testet i en Access 2000
Avatar billede nyholm Novice
28. september 2007 - 08:57 #18
Jag anvænder access 2003
Avatar billede nyholm Novice
21. februar 2008 - 17:00 #19
stänger frågan
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