27. april 2005 - 16:52Der 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
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.
' 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
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
' 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
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! )
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
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.
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
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
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
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.