Avatar billede troelsm Nybegynder
28. februar 2009 - 17:55 Der er 3 kommentarer og
1 løsning

Akkumulering af felter i access -

Jeg har nedenstående kode.
Den akkumulere alle felter i en tabel til venstre,
er der en som kan skrive den om så den gør det samme men blot mod højre.

Private Sub Kommandoknap0_Click()

    Dim db As Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("adresser")
    Do While Not rs.EOF
        If rs.Fields.Count > 2 Then
            ' Vi antager, at felt 0 er Id feltet, og at resten af felterne er de felter, der skal reorganiseres...
            For x = 1 To rs.Fields.Count - 2
                If IsNull(rs.Fields(x)) Then
                    'Det testede felt indeholder Null, finde det næste felt, som indeholder en værdi...
                    For y = x + 1 To rs.Fields.Count - 1
                        If Not IsNull(rs.Fields(y)) Then
                            rs.Edit
                            rs.Fields(x) = rs.Fields(y)
                            rs.Fields(y) = Null
                            rs.Update
                            Exit For
                        End If
                    Next
                End If
            Next
        End If
        rs.MoveNext
    Loop
End Sub
Avatar billede hugopedersen Nybegynder
02. marts 2009 - 07:35 #1
Private Sub cmdTest_Click()
  Dim strSQL As String
  Dim intX As Integer
  Dim intY As Integer
  Dim rst As New ADODB.Recordset
 
  strSQL = "SELECT * FROM Adresser"
  rst.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockOptimistic
   
  Do While Not rst.EOF
    If rst.Fields.Count > 2 Then
            ' Vi antager, at felt 0 er Id feltet, og at resten af felterne er de felter, der skal reorganiseres...
      For intX = (rst.Fields.Count - 1) To 2 Step -1
        If IsNull(rst.Fields(intX)) Then
          'Det testede felt indeholder Null, finde det næste felt, som indeholder en værdi...
          For intY = intX - 1 To 1 Step -1
            If Not IsNull(rst.Fields(intY)) Then
              rst.Fields(intX) = rst.Fields(intY)
              rst.Fields(intY) = Null
              rst.Update
              Exit For
            End If
          Next
        End If
      Next
    End If
    rst.MoveNext
  Loop
   
End Sub

(reference til ADO)
Avatar billede hugopedersen Nybegynder
04. marts 2009 - 08:46 #2
Gav det noget resultat?
Avatar billede troelsm Nybegynder
09. marts 2009 - 08:56 #3
Hejsa

Ja det virkede perfekt - det tog bare lidt tid inden jeg kunne teste det.
Avatar billede hugopedersen Nybegynder
09. marts 2009 - 16:38 #4
Ja 'ting tar den tid ting tar og ikke den tid man tror ting tar'
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