varvoura
asked on
field types
Hi there,
I have this agent which imports data from a .txt to a notes database. The import seems to work fine, but I want to add some field validation on the imported data so that they are placed correctly on the form. I have done a brief field validation on the entire string, but i prefer if I can do it on each part of the string(imported array). Would that be possible, could I get some help with this small section.
Below is my script and I am currently working to resolve it.
Lotus Notes Database Synopsis - Generated at 07:49:52 PM on 08/05/2006
Agent Information
Name: test working import
Last Modification: 08/05/2006 07:49:20 PM
Comment: [Not Assigned]
Shared Agent: No
Type: LotusScript
State: Enabled
Trigger: Scheduled
Interval: On Schedule Daily
Acts On: All documents in database
LotusScript Code:
Option Public
Option Compare Nocase
%INCLUDE "LSCONST.LSS"
%INCLUDE "LSERR.LSS"
%INCLUDE "LSXBEERR.LSS"
Public Const str_INPUTFILE="C:\test.TXT " 'Imput filename
Sub Initialize
On Error Resume Next
Dim session As New NotesSession
Dim db As notesdatabase
Dim view As notesview
Set db = session.currentdatabase
Set view = db.getview("orderplan")
Dim fileName As String
Dim txt As Variant
Dim fileNum As Integer
Dim doc As NotesDocument
Dim newdoc As notesdocument
Dim itemA As NotesItem
'enable agent manager logging
Dim msg As String
Dim agentLog As NotesLog
Set agentLog = New NotesLog("Importing Franchise Stocklist.txt")
Call agentLog.OpenMailLog("vkal ouche@pirt ek.com.au" ,"Franchis e Stocklist Import Log")
Call agentlog.LogAction("Starti ng the Import agent...")
'check if file exist
If Not doesFileExist(str_INPUTFIL E) Then
msg ="Sorry, unable to locate " + str_INPUTFILE
Call agentlog.LogAction(msg)
Call agentlog.Close
Exit Sub
End If
'populate the imported records in their equivalent document fields
Dim ret As Variant
Dim colNames(0 To 17) As String
colNames(0) = "test1"
colNames(1) = "test2"
colNames(2) = "test3"
colNames(3) = "test4"
colNames(4) = "testn"
colNames(5) = "test_1"
colNames(6) = "test_2"
colNames(7) = "test_3"
colNames(8) = "test_4"
colNames(9) = "test_5"
colNames(10) = "test_6"
colNames(11) = "test_7"
colNames(12) = "test_8"
colNames(13) = "test_9"
colNames(14) = "test_10"
colNames(15) = "test_11"
colNames(16) = "test_12"
colNames(17) = "opproddesc"
fileName$ = "test.TXT"
Call view.AllEntries.RemoveAll( True)
' Get an unused file number so LotusScript can open a file.
fileNum% = Freefile()
Open fileName For Input As fileNum%
Do While Not Eof(fileNum%)
' Read each line of the file.
Line Input #fileNum%, txt
If txt <> "" Then
' ret = Split(txt, " ")
Set doc = New NotesDocument(db)
doc.Form = "orderplan"
For x = 0 To 17
If Instr(txt," ") = 0 Then
lstr = txt
Else
lstr = Strleft(txt," ")
End If
txt = Strright(txt," ")
'field handling
If Isdate(lstr)Then
lstr=Cdat(lstr)
Elseif lstr = " " Then
lstr = Cstr(lstr)
Elseif Isnumeric (lstr) Then
lstr =Cdbl(lstr)
Else
lstr =Cstr(lstr)
End If
'end of field handling
Set item = doc.replaceItemValue(colNa mes(x), lstr)
Next
Call doc.ComputeWithForm(False, False)
Call doc.Save( True, True )
End If
Loop
Call agentlog.LogAction("File Imported Successfully")
Call agentlog.Close
Close fileNum%
Name fileName$ As Strleftback(Lcase(fileName $),".txt") & Format$( Today, "dd.mm.yyyy" ) & "old"
Exit Sub
End Sub
Function doesFileExist(strPath As String) As Integer
Dim tmpFile As String
doesFileExist = False
If strPath="" Then Exit Function
On Error Goto NoFile_Error
tmpFile = Dir$(strPath)
If Len(tmpFile)<>0 Then doesFileExist = True
Exit Function
NoFile_Error:
Err = 0
doesFileExist = False
Exit Function
End Function
Sub Terminate
End Sub
Your help will be much appreciated.
varvoura
I have this agent which imports data from a .txt to a notes database. The import seems to work fine, but I want to add some field validation on the imported data so that they are placed correctly on the form. I have done a brief field validation on the entire string, but i prefer if I can do it on each part of the string(imported array). Would that be possible, could I get some help with this small section.
Below is my script and I am currently working to resolve it.
Lotus Notes Database Synopsis - Generated at 07:49:52 PM on 08/05/2006
Agent Information
Name: test working import
Last Modification: 08/05/2006 07:49:20 PM
Comment: [Not Assigned]
Shared Agent: No
Type: LotusScript
State: Enabled
Trigger: Scheduled
Interval: On Schedule Daily
Acts On: All documents in database
LotusScript Code:
Option Public
Option Compare Nocase
%INCLUDE "LSCONST.LSS"
%INCLUDE "LSERR.LSS"
%INCLUDE "LSXBEERR.LSS"
Public Const str_INPUTFILE="C:\test.TXT
Sub Initialize
On Error Resume Next
Dim session As New NotesSession
Dim db As notesdatabase
Dim view As notesview
Set db = session.currentdatabase
Set view = db.getview("orderplan")
Dim fileName As String
Dim txt As Variant
Dim fileNum As Integer
Dim doc As NotesDocument
Dim newdoc As notesdocument
Dim itemA As NotesItem
'enable agent manager logging
Dim msg As String
Dim agentLog As NotesLog
Set agentLog = New NotesLog("Importing Franchise Stocklist.txt")
Call agentLog.OpenMailLog("vkal
Call agentlog.LogAction("Starti
'check if file exist
If Not doesFileExist(str_INPUTFIL
msg ="Sorry, unable to locate " + str_INPUTFILE
Call agentlog.LogAction(msg)
Call agentlog.Close
Exit Sub
End If
'populate the imported records in their equivalent document fields
Dim ret As Variant
Dim colNames(0 To 17) As String
colNames(0) = "test1"
colNames(1) = "test2"
colNames(2) = "test3"
colNames(3) = "test4"
colNames(4) = "testn"
colNames(5) = "test_1"
colNames(6) = "test_2"
colNames(7) = "test_3"
colNames(8) = "test_4"
colNames(9) = "test_5"
colNames(10) = "test_6"
colNames(11) = "test_7"
colNames(12) = "test_8"
colNames(13) = "test_9"
colNames(14) = "test_10"
colNames(15) = "test_11"
colNames(16) = "test_12"
colNames(17) = "opproddesc"
fileName$ = "test.TXT"
Call view.AllEntries.RemoveAll(
' Get an unused file number so LotusScript can open a file.
fileNum% = Freefile()
Open fileName For Input As fileNum%
Do While Not Eof(fileNum%)
' Read each line of the file.
Line Input #fileNum%, txt
If txt <> "" Then
' ret = Split(txt, " ")
Set doc = New NotesDocument(db)
doc.Form = "orderplan"
For x = 0 To 17
If Instr(txt," ") = 0 Then
lstr = txt
Else
lstr = Strleft(txt," ")
End If
txt = Strright(txt," ")
'field handling
If Isdate(lstr)Then
lstr=Cdat(lstr)
Elseif lstr = " " Then
lstr = Cstr(lstr)
Elseif Isnumeric (lstr) Then
lstr =Cdbl(lstr)
Else
lstr =Cstr(lstr)
End If
'end of field handling
Set item = doc.replaceItemValue(colNa
Next
Call doc.ComputeWithForm(False,
Call doc.Save( True, True )
End If
Loop
Call agentlog.LogAction("File Imported Successfully")
Call agentlog.Close
Close fileNum%
Name fileName$ As Strleftback(Lcase(fileName
Exit Sub
End Sub
Function doesFileExist(strPath As String) As Integer
Dim tmpFile As String
doesFileExist = False
If strPath="" Then Exit Function
On Error Goto NoFile_Error
tmpFile = Dir$(strPath)
If Len(tmpFile)<>0 Then doesFileExist = True
Exit Function
NoFile_Error:
Err = 0
doesFileExist = False
Exit Function
End Function
Sub Terminate
End Sub
Your help will be much appreciated.
varvoura
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Anyone else with any ideas? I've ran out of ideas and I need to hand this in the morning, so any help/ideas will be great
>Call doc.ComputeWithForm(False, False)
should be Call doc.ComputeWithForm(true,t rue) , so any validation that is defined in the form will raise errors. Capture the return value to save or not to save the doc
~Hemanth
should be Call doc.ComputeWithForm(true,t
~Hemanth
ASKER
colNames(4) is a numeric value, but for some reason whenever the import happens, it is not imported, hence creating other problems. When discussing with my manager, the problem would be resolved if I enable some sort of numeric field validation. I have tried using colNames(4) = cdbl(testn)... but nothing seems to work, when I check the document properties, i can see the field as "" of text type.