Quoting Marco Bambini <[EMAIL PROTECTED]>:
> Before this line:
> curRecord.Column("pathname") = thePath
> you should add:
> curRecord = New DatabaseRecord
>
> You need to create a new DatabaseRecord for each insert inside the
> loop...
Thanks Marco -
I've moved that out of the Dim into the loop. Also, the issue of the rs
returned from the select:
> > Dim curRecord As DatabaseRecord
> > Dim rs As New RecordSet
> > Dim f As FolderItem
> > Dim fs As TextInputStream
> > Dim curline, thePath, theFile As String
> >
> > f = GetFolderItem("/private/tmp/runoutput1.log", _
> > FolderItem.PathTypeShell)
> >
> > fs = f.OpenAsTextFile
> >
> > While Not fs.EOF
> > curline = fs.ReadLine
> > If Left(curline, 3) = "VL:" Then
> > // This gets the full file and path from the text file
> > thePath = NthField(curline, "|", 6)
> > // this gets the files path (dirname)
> > thePath = dirname(thePath)
> > // send the result to my Debug class
> > Debug.Print "SQL Select: " + "select * from paths where
> > pathname='" _
> > + thePath + "'"
> > rs = CatalogDB.SQLSelect("select * from paths where
> > pathname='" _
> > + thePath + "'")
> > if CatalogDB.Error Then
That last line ^^^^^^^^^^
Was changed to read:
If rs.RecordCount <> 0 Then
and the lookups are now reacting properly.
I have one remaining issue - when I insert the record into the paths datatable,
how can I determine what the rowID was for that table? When I use the
"thePathID = app.BRUCatalogDB.LastRowID"
command, I get the last rowid for any insert and the rowid's for the files
table
could be MUCH larger than the ID that was actually assigned to the path insert.
Here's my (sort-of) working code:
Dim curRecord As DatabaseRecord
Dim rs As New RecordSet
Dim f As FolderItem
Dim fs As TextInputStream
Dim curline, thePath, theFile, theArchiveID, theLink As String
Dim theVol, theQFA, thePathID, lnCount As Integer
Dim theSize As Int64
f = GetFolderItem("/private/var/lib/bru/tmp/brucat1.log", _
FolderItem.PathTypeShell)
fs = f.OpenAsTextFile
lnCount = 0
While Not fs.EOF
curline = fs.ReadLine
lnCount = lnCount + 1
If Left(curline, 13) = "archive ID = " Then
theArchiveID = NthField(curline, "= ", 2)
ElseIf Left(curline, 3) = "VL:" Then
theVol = Val(NthField(curline, "|", 3))
theSize = Val(NthField(curline, "|", 4))
theQFA = Val(NthField(curline, "|", 5))
// This gets the full file and path from the text file
thePath = NthField(curline, "|", 6)
// this gets the files path (dirname)
If InStr(thePath, Chr(0)) <> 0 Then
thePath = NthField(thePath, Chr(0), 1)
theLink = NthField(thePath, Chr(0), 2)
Else
theLink = ""
End If
thePath = dirname(thePath)
theFile = filename(thePath)
Debug.Print "SQL Select: " + "select * from paths where pathname='" _
+ thePath + "'"
rs = App.BRUCatalogDB.SQLSelect("select * from paths where pathname='" _
+ thePath + "'")
if rs.RecordCount = 0 Then
curRecord = New DatabaseRecord
Debug.Print "No matching records for " + thePath + " in paths table"
EditField1.SelText = thePath + EndOfLine
curRecord.Column("pathname") = thePath
App.BRUCatalogDB.InsertRecord("paths", curRecord)
thePathID = app.BRUCatalogDB.LastRowID
Debug.Print "PathID " + Str(thePathID) + " = " + thePath
curRecord = Nil
Else
Debug.Print "Recordset count = " + Str(rs.RecordCount) + ", " + _
"Lastrow was " + Str(app.BRUCatalogDB.LastRowID)
thePathID = Val(rs.Field("pathid").Value)
Editfield1.SelText = "Path entry is " + Str(thePathID) + EndOfLine
End If
curRecord = New DatabaseRecord
curRecord.IntegerColumn("pathid") = thePathID
curRecord.Column("filename") = theFile
curRecord.Column("archiveid") = theArchiveID
curRecord.IntegerColumn("volume") = theVol
curRecord.Int64Column("filesize") = theSize
curRecord.IntegerColumn("qfa_start") = theQFA
curRecord.Column("linkpath") = theLink
App.BRUCatalogDB.InsertRecord("files", curRecord)
End If
If lnCount \ 100 = 0 Then
App.BRUCatalogDB.Commit
End If
Wend
Everything looks good except the rowID for the path may not actually match the
inserted row value in the paths datatable.
Tim
--
Tim Jones
[EMAIL PROTECTED]
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>