Domino 9 und frühere Versionen > Entwicklung

Import einer Textdatei mit .col Datei

(1/6) > >>

Kadlec:
Hallo folgendes möchte ich tun:
1. Von einem IBM mainframe mittels ftp eine datei downloaden.
2. Diese in eine Db importieren.
3. Dies sollte autom. nachts geschehen (wenn möglich)
4. Wenn 3. nicht möglich dann so autom. das ein user nur auf einen button klickt (ohne Abfrage nach Dateinamen etc.)

Punkt 1 habe ich soweit realisiert (feintuning später)

Zu Punkt 2 habe ich aus dem LDD Forum ein script gefunden das die Daten der .col Datei in die notes.ini schreibt und dann importiert.
Dieses script funktioniert aber bei mir nicht muß wohl angepasst werden,.. aber wo?
Angepasst habe ich die .col Datei (bei mir auf c:\) die Importdatei und das Dok.

Die .col Datei sieht so aus:
ServNr_T: TYPE TEXT START 06 END 14
KatNrVorgr_T: TYPE TEXT START 16 END 21

Die Import Datei:
0    13148917  01 12     EINSATZ                     SK   L03070          

Das script so:
(Declar)
Type ColStruc
     FieldName As String
     FieldStart As Integer
     FieldEnd As Integer
End Type

(Init..)
Sub Initialize
     Dim Fields() As ColStruc
     Dim FieldCntr As Integer
     Dim Counter As Integer
     Dim txt As String
     Dim ColFileName As String
     Dim DataFileName As String
     Dim FormName As String
     Dim FieldContents As String
     Dim pos As Integer, spacePos As Integer
     
     Dim session As New NotesSession
     Dim db As NotesDataBase
     Dim doc As NotesDocument
     
' Set the names.
     ColFileName="c:\catalogalert_import.col"
     DataFileName="c:\catalogalert.txt"
     FormName="Import"
     
     
' Determine the number of fields described.
     Counter = 0
     Open ColFileName For Input As 1
     Do While Not Eof(1)
          Line Input #1,txt$
          Counter = Counter +1
         
' Correct if the line is empty (less than 3 characters), so ignore then the line
          If Len(txt$)<3 Then
               Counter = Counter - 1
          End If
     Loop
     
' Now read the field names with their start and end positions
     Redim Fields(1 To Counter)
' Move to first record again
     Seek 1, 1
     FieldCntr=1
     Do While Not Eof(1)
          Line Input #1, txt$
          If Len(txt$)>3 Then
               pos=Instr(txt$,":")
               Fields(FieldCntr).FieldName=Left$(txt$,pos-1)
               
'get the START position
               pos=Instr(txt$,"START ")+6 'Returns the position of the character that begins the first occurrence of one string within another string.
'get the first space after the number following 'START '
               spacePos = Instr(pos,txt$," ")
               Fields(FieldCntr).FieldStart=Cint(Mid$(txt$,pos,spacePos-pos)) 'Extracts a string from within another string, beginning with the character at a specified position. expr , start [ , length ]
               
'get the END position
               pos=Instr(txt$,"END ")+4
'the number following 'END ' is at the end of the string
               Fields(FieldCntr).FieldEnd=Cint(Mid$(txt$,pos,Len(txt$)-pos+1))
               
               FieldCntr = FieldCntr + 1
          End If
     Loop
     Close 1
     
     Set db = session.CurrentDatabase
     
' Now read the data file
     Open DataFileName For Input As 1
     Do While Not Eof(1)
         
' For each row, create a document
          Set doc = New NotesDocument(db)
          Line Input #1, txt$
          For FieldCntr=1 To Counter
               
' Determine the content of the field
               If txt$<>"" Then
                    FieldContents=Mid$(txt$,Fields(FieldCntr).FieldStart,Fields(FieldCntr).FieldEnd - Fields(FieldCntr).FieldStart+1)
               Else
                    FieldContents=""
               End If
               doc.AppendItemValue Fields(FieldCntr).FieldName, FieldContents
          Next
         
         
     Loop
     Close 1
     
End Sub

Hoffe mir kann jemand helfen, im voraus Vielen Dank!!!!

Kadlec:
Hallo vergesst das erste Posting die Datei wird importiert.
Habe nur den beim normalen Import erscheinende Status Balken nicht gesehen und dachte deshalb es passiert nichts.
Außerdem sind die Doks nicht in der vorgesehenen Ansicht zu sehen??
Dazu dann auch gleich Fragen:

1. Meine Import Ansicht hat die Select Formel {Form ="Import" & @If(Verteilt=0).Das Feld Verteilt_N ist ber. beim anlegen und hat die Vorgabe 0. Warum erscheinen die Doks hier nicht???
2. In der Maske Import habe ich ein Datumsfeld das die Vorgabe @Today hat. Das Datum erschein auch in der Maske in der Ansicht nicht, warum??
3. Den Import Agent kann ich nicht in der Import Ansicht starten (Agent muß in einer Ansicht ausgeführt werden), ich bin doch aber in einer Ansicht??

Danke für die Hilfe

koehlerbv:
Ich habe das eben im Thread http://www.atnotes.de/index.php?board=10;action=display;threadid=9881 schon geschrieben: Was soll es, wenn man einen Code von irgendwoher verwendet, von dem man absolut keine Ahnung hat ?
Im verwendeten Code fehlt ja - wenn ich nicht halluziniere angesichts der heutigen Temperaturen hier im Chiemgau - sogar das Speichern der erzeugten Dokumente. Vom Setzen wichtiger Systemfelder wie Form ganz zu schweigen.
Und was soll das .COL file in der NOTES.INI ? Und wie kommst Du auf die Idee, Dein "gefundener Code" würde sich irgendwie um die NOTES.INI kümmern ?

Mein Schluß: Du hast von LotusScript aber auch gar keine Ahnung. Würdest Du in einem EuroFighter irgendeinen Schalter betätigen, wenn Du zufällig einen finden würdest ? ;-)

Du kannst den Import vom Client aus (und nicht serverbasierend) mit einem .COL file und dem offensichtlich ordentlichen Textfile vom Mainframe machen - siehe Hilfe-DB.

Das Ganze serverbasierend per LS zu machen ist ohne weiteres möglich, aber damit verdienen Leute, die das sehr aufwändig gelernt haben, ihr Geld und machen das auch nicht in zehn Minuten. Ich schick' Dir gern ein Angebot - aber keinen Quelltext ;-)

Nix für ungut, aber auch bei diesen Temperaturen sollte man nicht ganz den Überblick verlieren.

Bernhard

Glombi:
Hi Bernhard,
interessanter Vergleich: Euro-Fighter und LotusScript  ;D
Womit kann man wohl mehr Schaden anrichten?

Andreas

koehlerbv:
Wenn man weiß, daß die U.S.Navy Lotus Notes als Collaboration & Communication Platform einsetzt und dies auch - ich geniesse jetzt in diesen Tagen die Anführungszeichen - von ihren "Verbündeten" verlangt, denke ich mal, daß der EuroFighter noch recht harmlos ist.
1991 wurde der Rückwärtige Dienst der U.S.Army mit ccMail geführt, jetzt ist es (logischerweise) Notes.

Es kommt halt eben immer darauf an, was man daraus macht - egal in welchem Bereich: Die Suchoj-27 (russisch also) und Nachfolgemodelle (bis SU-47) sind wohl die genialsten Kampfflieger der Welt. Und was geht rum um die Welt: Der Unfall bei der Jubiläums-Flugschau in Lwow (Ukraine) im vergangenen Jahr - ein Horrorszenario wie in Ramstein  1988. Was will man aber erwarten: Ein Super-Tool, aber seit mehr als vier Jahren haben die Ukrainer (die Betreiber der Unglücksmaschine) kein Ersatzteil mehr von der (russischen) Herstellerfirma gekauft. Was will man also erwarten? Da das jetzt hier nicht das Forum dafür ist, nur ganz kurz: Die Ukrainer haben auch sonst wohl so jede bei den Russen (und anderswo, aber vielleicht nicht bei den Amis) geltende Vorschrift für extreme Flugmanöver bei Airshows verletzt.

Und jetzt ziehen wir wieder mal den Rückschluß zu Lotus Notes/Domino: Cheffe sagt zum newbee: "Mach mal!". Newbee hat den Sinn der übergeordneten Sache nicht verstanden und sagt "Yes, Sir, Gunnery Sergeant, Sir !!!", anstatt sein Hirn einzuschalten und sein aktuelles Niveau einzuschätzten. Und schon ist der Weg frei für "Notes ist sch****e"-Kommentare.
Glücklicherweise sind davon ja auch andere Produkte betroffen. Nicht nur Notes und die Suchoj SU-27/37/47. Oder was auch immer ...

Ich galub' aber trotzdem an das Gute im Menschen ;-)

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln