Avatar billede yuksel Nybegynder
27. april 2005 - 16:52 Der er 37 kommentarer og
1 løsning

Det er ingen aktuel post

hej til alle


jeg prøver at skrive ind til en tabel som er tom med
    rec.Edit
normalt plejer den at skrive til tabellen og hvis den er tom så tilføjer den bare. men nu melder den

"Det er ingen aktuel post"
27. april 2005 - 16:55 #1
Du er nødt til at bruge rec.Addnew for at tilføje.

Du kan evt spørge på rec.eof eller recordcount inden:

If rec.recordcount > 0 or rec.eof then
    rec.edit
else
    rec.addnew
endif
27. april 2005 - 16:55 #2
Den blev vist lidt omvendt. Sådan:

If rec.recordcount = 0 or rec.eof then
    rec.addnew
else
    rec.edit
endif
Avatar billede yuksel Nybegynder
27. april 2005 - 16:58 #3
hmmm. nu melder den igen "Det er ingen aktuel post"" men bare
ved  rec.MoveNext som er den sidste sætning i min løkke
Avatar billede yuksel Nybegynder
27. april 2005 - 17:00 #4
det kommer til at se sådan ud :

      If rec.RecordCount = 0 Or rec.EOF Then
      rec.AddNew
      Else
      rec.Edit
      End If

    rec.Update
  rec.MoveNext
Avatar billede yuksel Nybegynder
27. april 2005 - 17:01 #5
også skriver jeg til databasen midt i
Avatar billede yuksel Nybegynder
27. april 2005 - 17:06 #6
hmm.... hvor i henne ?
Avatar billede terry Ekspert
27. april 2005 - 18:17 #7
To add a new record you should just use,


rec.addnew
'Now adde the fields

rec.update


its also allowed to add records to a recordset which alreday contains records!
27. april 2005 - 21:44 #8
sorry...havde lige en familie og noget mad, der skulle laves/spises :o)

Du kan ikke lave en .movenext, hvis du allerede står i slutningen af recordsettet.

Så på en eller anden måde er du nødt til at styre det således, at rec.movenext kun udføres hvis du har brugt rec.edit.

Det er lidt svært at gennemskue, når vi ikke har hele koden...kan du paste den?
Avatar billede yuksel Nybegynder
28. april 2005 - 09:23 #9
Jeg paster lige koden det tager et par min
Avatar billede yuksel Nybegynder
28. april 2005 - 09:39 #10
er der nogen
Avatar billede yuksel Nybegynder
28. april 2005 - 09:43 #11
ok jeg har lavet noget ved dette kode, så det kommer til at løse også et andet spørgesmål som jeg har stillet her på eksperten og da den ikke er accepteret, ville løsningen på denne også være = dens.

jeg har en main xml som indholder sub xml ernes navne
i koden prøver jeg at hente navne af sub xml ud fra main xml, og senere åbner jeg op for sub xml og prøver at smide de ting derinde fra ind i min tabel som er tom til at starte med.
Avatar billede yuksel Nybegynder
28. april 2005 - 09:43 #12
koden ser sådan ud .:



' sql streng til at gemme i denne tabel
strSQL = "SELECT * FROM Bil"
       
    Set qms = dbs.CreateQueryDef("", strSQL)
    Set rec = qms.OpenRecordset()
       
    ' Main Xml fil som indholder navne på subxml filer som skal bruges
    Set lines= dom.selectNodes("//order/xmlliste")
    Set AIR = dom1.selectNodes("//doc/biler/bil")
     
    For Each ELM In lines
        xmlfilnavn = ELM.selectSingleNode("filId").Text
        test = ELM.selectSingleNode("filId").Text
        xmlfilename = xmlroot & xmlfilnavn & xmltype
        dom1.async = False
        dom1.Load (xmlfilename)
     
    'Her har vi fat i sub xml filer for at hente data fra dem


    For Each Order In AIR
        If Not rec.EOF Then rec.MoveFirst
        While Not rec.EOF

        If rec.RecordCount = 0 Or rec.EOF Then
          rec.AddNew
        Else
          rec.Edit
        End If


      ' her gemmes værdier fra xml fil til tabellen
        rec.Fields!filename = xmlfilnavn
        rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text

    rec.Update
  rec.MoveNext
  Wend
Next
Next
rec.Close
End Sub
Avatar billede yuksel Nybegynder
28. april 2005 - 09:44 #13
jeg har afsat flere poin , og også fordi jeg gået i stå :(
Avatar billede yuksel Nybegynder
28. april 2005 - 09:46 #14
problemmet dukker vist op her  :


      If Not rec.EOF Then rec.MoveFirst
        While Not rec.EOF

        If rec.RecordCount = 0 Or rec.EOF Then
          rec.AddNew
        Else
          rec.Edit
        End If


      ' her gemmes værdier fra xml fil til tabellen
        rec.Fields!filename = xmlfilnavn
        rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text

    rec.Update
  rec.MoveNext
  Wend



og jeg trore at det er fordi jeg ikke kan finde helt ud af det med courser dvs. det der med at stille mig den rigtige sted i tabellen og gå i rigtige retning
28. april 2005 - 09:57 #15
Bare en ide:

' sql streng til at gemme i denne tabel
strSQL = "SELECT * FROM Bil"
       
    Set qms = dbs.CreateQueryDef("", strSQL)
    Set rec = qms.OpenRecordset()
       
    ' Main Xml fil som indholder navne på subxml filer som skal bruges
    Set lines= dom.selectNodes("//order/xmlliste")
    Set AIR = dom1.selectNodes("//doc/biler/bil")
     
    For Each ELM In lines
        xmlfilnavn = ELM.selectSingleNode("filId").Text
        test = ELM.selectSingleNode("filId").Text
        xmlfilename = xmlroot & xmlfilnavn & xmltype
        dom1.async = False
        dom1.Load (xmlfilename)
     
    'Her har vi fat i sub xml filer for at hente data fra dem

    On Error resume next  'Ignorer fejl
    For Each Order In AIR
        If Not rec.EOF Then rec.MoveFirst
        While Not rec.EOF
            rec.addnew
            rec.Edit

            ' her gemmes værdier fra xml fil til tabellen
            rec.Fields!filename = xmlfilnavn
            rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text

            rec.Update
            rec.MoveNext
        Wend
    Next Order
Next ELM
rec.Close
End Sub
Avatar billede yuksel Nybegynder
28. april 2005 - 10:03 #16
det eneste ændring er det : On Error resume next
28. april 2005 - 10:04 #17
Jeg har også ændret i din While-Wend-løkke
Avatar billede yuksel Nybegynder
28. april 2005 - 10:05 #18
den hopper ud af løøken her     
     
      For Each Order In AIR
        If Not rec.EOF Then rec.MoveFirst
Avatar billede yuksel Nybegynder
28. april 2005 - 10:05 #19
jeg paster lige koden ind
Avatar billede yuksel Nybegynder
28. april 2005 - 10:12 #20
terry den hopper ud af løkken ved  :  While Not rec.EOF



udpluk :
    On Error resume next  'Ignorer fejl
    For Each Order In AIR
        If Not rec.EOF Then rec.MoveFirst
        While Not rec.EOF  ' her hopper den ud af løkken og får aldrig skrevet noget til tabellen, (min tabel er tom! )
Avatar billede yuksel Nybegynder
28. april 2005 - 10:13 #21
undskyld jeg mener thomasjepsen og ikke terry
Avatar billede yuksel Nybegynder
28. april 2005 - 10:14 #22
den hopper også ud af løkken  ved :  While Not rec.BOF
28. april 2005 - 10:16 #23
jeg skal lige have forklaret hvad du ønsker:

For hver ORDER ønsker du at oprette eller rette én post i Bil-tabellen? Er det korrekt?

Derfor skal du vel ikke gennemløbe hele Bil-tabellen?
Avatar billede yuksel Nybegynder
28. april 2005 - 10:19 #24
jeg har ikke nogen ordre i tabellen den er tom, der er for hver bilno vil jeg gerne oprette en post i min tabel.


rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text



jeg har stillet mig i tabellen uden noget som helst kritier:
' sql streng til at gemme i denne tabel
strSQL = "SELECT * FROM Bil"


derfor regnede jeg med at det var ok, og at jeg bare kunne høvle alt ind i min tabel
Avatar billede yuksel Nybegynder
28. april 2005 - 10:22 #25
Dim order As IXMLDOMNodeList

order er erklæret her
Avatar billede yuksel Nybegynder
28. april 2005 - 10:29 #26
ok, nu kørere den i løkken men jeg får kun tilføjet en post den kørere ikke videre til næste post
Avatar billede yuksel Nybegynder
28. april 2005 - 10:31 #27
nej den hopper ud af løkken alligevel
    While Not rec.BOF
28. april 2005 - 10:41 #28
Men hvis du vil oprette en post i Bil-tabellen for hver ORDER i doc/biler/bil, så behøver du vel ikke Rec.edit. Så skal du jo bare altid bruge rec.addnew:

' sql streng til at gemme i denne tabel
strSQL = "SELECT * FROM Bil"
       
    Set qms = dbs.CreateQueryDef("", strSQL)
    Set rec = qms.OpenRecordset()
       
    ' Main Xml fil som indholder navne på subxml filer som skal bruges
    Set lines= dom.selectNodes("//order/xmlliste")
    Set AIR = dom1.selectNodes("//doc/biler/bil")
     
    For Each ELM In lines
        xmlfilnavn = ELM.selectSingleNode("filId").Text
        test = ELM.selectSingleNode("filId").Text
        xmlfilename = xmlroot & xmlfilnavn & xmltype
        dom1.async = False
        dom1.Load (xmlfilename)
     
    'Her har vi fat i sub xml filer for at hente data fra dem

    On Error resume next  'Ignorer fejl
    For Each Order In AIR
            rec.addnew

            ' her gemmes værdier fra xml fil til tabellen
            rec.Fields!filename = xmlfilnavn
            rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text

            rec.Update
    Next Order
Next ELM
rec.Close
End Sub
Avatar billede yuksel Nybegynder
28. april 2005 - 10:42 #29
hvad nu hvis posten findes i forvejen
Avatar billede yuksel Nybegynder
28. april 2005 - 10:46 #30
ok, nu skriver den alt det jeg gerne vil have ind i tabellen, men hvis brugeren trykker to gange så bliver tingene skrevet ind 2 gange
28. april 2005 - 10:47 #31
Så vil der opstå en fejl, som bare ignoreres.

Du kunne evt prøve denne:

On Error resume next  'Ignorer fejl
    For Each Order In AIR
            rec.addnew

            ' her gemmes værdier fra xml fil til tabellen
            rec.Fields!filename = xmlfilnavn
            rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text

            rec.Update
            If Err then
                rec.addnew

                ' her gemmes værdier fra xml fil til tabellen
                rec.Fields!filename = xmlfilnavn
                rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text
                rec.Update
            endif
    Next Order
Next ELM
rec.Close
End Sub

Hvis tingene skrives ind 2 gange, så skyldes det, at du mangler et unikt indeks på din tabel.
Avatar billede yuksel Nybegynder
28. april 2005 - 10:51 #32
jeg har en unik indeks , den har jeg fjernet for at få det her til virke, og nu når det virker så har jeg sat min unik index på igen.
men her kommer problemmet så.
1 gang: skriver jeg tingene ind  '  det fungere fint
2 gang: så melder den fejl !  ' men denne kan ignoreres

så er der det at hvis xml filen har været ændret ved 2 gang så kommer ændringerne ikke på ! ! fordi vi ignorere fejlen
Avatar billede yuksel Nybegynder
28. april 2005 - 10:51 #33
den skal ligesom opdatere den istedetfor at skrive den på ny
28. april 2005 - 10:54 #34
Hvis bilnr er unik og nummerisk, så prøv denne:

On Error resume next  'Ignorer fejl
    For Each Order In AIR
            rec.addnew

            ' her gemmes værdier fra xml fil til tabellen
            rec.Fields!filename = xmlfilnavn
            rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text

            rec.Update
            If Err then
                rec.Findfirst "Bilnr = order.selectSingleNode("BilNo").Text
                rec.Edit
                  ' her gemmes værdier fra xml fil til tabellen
                  rec.Fields!filename = xmlfilnavn
                  rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text
                rec.Update
            endif
    Next Order
Next ELM
rec.Close
End Sub
Avatar billede yuksel Nybegynder
28. april 2005 - 11:06 #35
On Error resume next  'Ignorer fejl
    For Each Order In AIR
            rec.addnew

            ' her gemmes værdier fra xml fil til tabellen
            rec.Fields!filename = xmlfilnavn
            rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text

            rec.Update
            If Err then
                rec.Findfirst "Bilnr = order.selectSingleNode("BilNo").Text
                rec.Edit
                  ' her gemmes værdier fra xml fil til tabellen
                  rec.Fields!filename = xmlfilnavn
                  rec.Fields!Bilnr = order.selectSingleNode("BilNo").Text
                rec.Update
              rec.movenext  ' skal den ikke med
            endif
    Next Order
Next ELM
rec.Close
End Sub
Avatar billede yuksel Nybegynder
28. april 2005 - 11:07 #36
men det virker nu tussind tak for hjælpen :)
28. april 2005 - 11:08 #37
Super! og selv tak :o)
Avatar billede yuksel Nybegynder
28. april 2005 - 11:10 #38
: )
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