Autor Thema: Per LS CSV-Datei importieren  (Gelesen 14959 mal)

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Per LS CSV-Datei importieren
« am: 06.08.07 - 13:26:50 »
Hallo Leute ;),

ich hab eine Anwendung in der per Agent Daten einer ldif-Datei ausgelesen und abgespeichert werden sollen. Bisher klappte das über ne wk4-Datei.

Da dieses Daten nun über LDAP zugänglich sind, wollt ich mich mal an dieses Thema ranwagen.

Habe mich mal durchgelesen zum Theam LDAP, aber noch nichts konkretes gefunden.
Ist der Import überhaupt per LS möglich?

Habe bisher nur mit WK4-Formaten zu tun gehabt und die haben gefunzt.

Gruß Jason

« Letzte Änderung: 28.08.07 - 07:50:59 von lotus blue »
Gruß Jason

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #1 am: 06.08.07 - 13:39:29 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #2 am: 06.08.07 - 13:56:57 »
guckst du http://atnotes.de/index.php?topic=36782.0

Danke. Hatte ich mir bereits reingezogen. Dennoch sind fragen offen.
Hast PN. 
Gruß Jason

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Per LS Daten von LDAP abholen
« Antwort #3 am: 06.08.07 - 14:13:57 »
Wenn Du die Fragen hier stellen würdest, könnten auch andere davon profitieren.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #4 am: 06.08.07 - 15:13:19 »
Wenn Du die Fragen hier stellen würdest, könnten auch andere davon profitieren.

Ja Fragen sind offen ;D, aber im Grunde fehlt es daran, dass es im Beitrag von eknori um Java, dll´s usw. geht
und momentan ist bei mir LS+Formelsprache Ende.

Deshalb hilft dieses Beispiel "noch" wenig.

Gruß Jason

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #5 am: 06.08.07 - 15:14:05 »
um LS geht es dort aber auch ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #6 am: 06.08.07 - 15:19:26 »
um LS geht es dort aber auch ...

Achso ;D. Ja darum das noch in "".
Tüfftle schon rum, mal schaun. Aber es bleibt schwierig , schwierig 8) ???
Gruß Jason

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #7 am: 06.08.07 - 15:27:50 »
die benötigten Funktionen aus den DLLs werden im Scrit mit z.B.
Code
Declare Function ldap_init Lib "wldap32.dll" ...
eingebunden (siehe auch eknoris Code). Danach kannst Du die Funktionen aus den DLLS wie Funktionen im Script verwenden. Die Funktionsweise und Syntax (Variablen und Typen) kann Dir dabei nur die Doku der DLL oder der Entwickler erklären.
Gruß
Dirk

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #8 am: 06.08.07 - 15:52:50 »
Zitat
Danke. aber....
« Senden an: diali am: Heute um 15:41:53 »

Danke für Deinen Tipp.
Ich versteh momentan aber nur Bahnhof.
Für was benötige ich überhaupt die dll´s?
Reicht es nicht in LS was zu programmieren?

Weiß nur vom zuständigen Programmierer, dass ich mit meiner DB per LDAP - Ldif
Daten holen soll. Per LS Daten importieren usw. OK
aber per LDAP ->absolut NULL,KOMMA,NULL Ahnung.

Aber es heißt einfach -> Mach mal, das kriegst schon hin.
Natürlich ist die ganze Prozedur, wenns es tut der Hammer.
Aber bis dahin ist es noch ein sehr weiter Weg.

Gruß Jason
ohne zusätzliche Tools kannst Du mit LS keine LDAP-Anfrage machen. Das Stück Code, welches Du benötigst, steckt in der DLL.

Alternativ (unschöner) kannst Du mit ldapsearch (ruf es mal an einer MS-DOS Eingabeaufforderung auf) ein Ergebnis in eine Datei umleiten und dann die Datei mit Script auswerten.
Gruß
Dirk

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Per LS Daten von LDAP abholen
« Antwort #9 am: 06.08.07 - 16:18:08 »
Lotus braucht sich nicht um eigene und möglicherweise fehlerbehaftete LDAP Routinen zu kümmern, wenn das windows-only als DLLs oder als Java sowieso schon für lau vorliegt.
Schwierig / Einfach sind sowieso subjektive und keine objektiven Kategorien. Es gibt auch unterschiedliche Arten von Schwierigkeit. Wenn Lotus jeden Enterprise Standard mit eigenem LotusScript Code unterstützte, würde das LotusScript als Sprache stark aufblähen. Und Leute, die sowieso mit Windows Programmierung (dlls) oder Java rumhantieren müßten alles doppelt lernen.

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS Daten von LDAP abholen
« Antwort #10 am: 10.08.07 - 08:23:53 »
Hi Leute,

habe mir mal Codes angeschaut und mit nem Tipp von Thomas Schulte (danke nochmals :-*) einfach mal rumprobiert.
Angemerkt sei, dass LS derzeit bei mir "noch" nicht richtig angekommen ist.
Der Grund-Kurs schafft hoffentlich Abhilfe.

Dennoch hoffe ich auf Hilfe, wo ich was komplett falsch codiert hab.

Es soll eine csv-Datei mit dem Namen test1.csv vom Laufwerk C: importiert werden. Die Datei enthält beliebig viele Infos über Nutzer.
Die Felder im csv sowie in der Maske "Main" lauten: sn, gn und l
Für jede Zeile soll ein neues Dok angelegt werden.

Hier der Code:
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant
   
   If resp% = 6 Then     
      fileNum% = Freefile()
             fileName$ = "C:\test1.csv"
     
      delimiter = ","

      'Hier habe ich noch keine Ahnung
      cells = 14 + 1
      k = 0
      
      Open fileName$ For Input As fileNum%
      Do While Not Eof(fileNum%)
       
      Line Input #1,  InputStr$
         
              Print Cstr(k) + " Alle Nutzer wurden angelegt."
      Loop
      Close fileNum%
   Else
      Exit Sub
   End If
   
End Sub

Function CreateDocument(FieldArray As Variant) As Integer
   Dim session As New notessession
   Dim db As notesdatabase
   Set db = session.currentdatabase
   Dim doc As New notesdocument(db)
   
   doc.Form = "Main"
   doc.sn = FieldArray(1)
   doc.gn = FieldArray(2)
   doc.l = FieldArray(3)
   
   Call doc.save(1,0)
   
End Function

« Letzte Änderung: 10.08.07 - 08:25:37 von lotus blue »
Gruß Jason

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #11 am: 10.08.07 - 15:22:26 »
Hier der Code:
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant

Hier macht das Sinn und nicht da unten in der Createdocument Routine

   Set db = session.currentdatabase
   


Du erwartest hier eine Antwort auf eine Frage, doch wo ist die Frage???
   If resp% = 6 Then     

      fileNum% = Freefile()
             fileName$ = "C:\test1.csv"
     
      delimiter = ","

      'Hier habe ich noch keine Ahnung

ich auch nicht. cells verwendest du gar nicht und k nur für die Print Ausgabe, die in einem Background Agent nichts verloren hat. Also ersatzlos streichen

      cells = 14 + 1
      k = 0
      
      Open fileName$ For Input As fileNum%
      Do While Not Eof(fileNum%)
       
      Line Input #1,  InputStr$

Hier fehlt was Schließlich muss du dein FieldArray ja auch irgendwie füllen
         FieldArray = Split(InputStr$Text$,delimiter)
Und das hier fehlt auch Irgendwie solltest du deiner Createdocument Version ja schließlich auch mitteilen was du von ihr willst.
         call CreateDocument(db, FieldArray)
Und außerdem ergänzt du die Übergabe der db in Createdocument



Kann man machen, sollte man aber bei background agents nicht tun. denn erstens werden die langsamer und zweitens müllt diese Ausgabe dann das Logfile vom Server zu.
              Print Cstr(k) + " Alle Nutzer wurden angelegt."

      Loop
      Close fileNum%
   Else
      Exit Sub
   End If
   
End Sub

Eine Function ist nur dann ein Funktion wenn sie auch einen Wert zurückgibt. Das tut deine
Function CreateDocument(FieldArray As Variant) As Integer
nicht, also ist sie eine
Sub CreateDocument(db as notesdatabase, FieldArray As Variant)
und wenn wir schon dabei sind, das ist hier nicht notwendigerweise performance fördernd
Entweder deklarierst du das als Global und initialisierst die DB nur einmal.
oder du löscht das hier und übergibst die db an die Sub
   Dim session As New notessession
   Dim db As notesdatabase
   Set db = session.currentdatabase

   Dim doc As New notesdocument(db)
   
   doc.Form = "Main"
   doc.sn = FieldArray(1)
   doc.gn = FieldArray(2)
   doc.l = FieldArray(3)
   
   Call doc.save(1,0)

und logischerweise gibt es hier auch keine
End Function
sondern eine
End Sub

« Letzte Änderung: 10.08.07 - 17:42:11 von Thomas Schulte »
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #12 am: 10.08.07 - 16:11:34 »
Danke. Werds am Montag versuchen.


Mann, ich muss noch so lange auf den Kurs warten :'(.
ABer vielleciht kann ich mich danach mal revanchieren  ;D (nur a Späßle)

Danke. Nun nerv ich Euch nicht mehr und wünsch ein schönes WE.
Gruß Jason

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #13 am: 21.08.07 - 07:14:28 »
Hallöchen liebe Forumgemeinde.

Import der Datei tut, aber mit den zu füllenden Felder habe ich noch Probleme.
Iregendwie hab ich noch wo einen Fehler. Momentan übernimmt er alles bis auf die jeweils Ersten Werte (a).

Die CSV ist wie folgt aufgebaut:
a,b,c,d,
Mustermann,Berlin,1234,Dirk,
Test,Bern,1234,Michael,
usw.
zur Info (a=name,b=Standort,c=Durchwahl, d=Vorname)

und hier der Code:
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant
   Set db = session.currentdatabase
   
   fileNum% = Freefile()
   
       ' Dateipfad
   fileName$ = "C:\test1.csv"
   
 ' Trennzeichen
   delimiter = ","
   
   Open fileName$ For Input As fileNum%
   Do While Not Eof(fileNum%)
      
  ' Zeile für Zeile einlesen
      Line Input #1,  InputStr$       
      FieldArray = Split(InputStr$,delimiter)
      Call CreateDocument(db, FieldArray)
      
   Loop
   Close fileNum%
   Exit Sub
   
End Sub

Sub CreateDocument(db As notesdatabase, FieldArray As Variant)
   Dim doc As New notesdocument(db)
   
   doc.Form = "Memo"
   doc.a = FieldArray(1)
   doc.b = FieldArray(2)
   doc.c = FieldArray(3)
   doc.d = FieldArray(4)
   
   
   Call doc.save(1,0)
   
End Sub
Gruß Jason

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #14 am: 21.08.07 - 07:19:19 »
ääää

wenn du die Basis nicht explizit auf 1 gesetzt hast, beginnt der Array bei 0 zu zählen.
array(1) ist dann schon der zweite Wert.


grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #15 am: 21.08.07 - 07:40:25 »
 O0 O0 >:D >:D O0 O0
Mann o Meter. Ja ist klar.
Danke

ääää

wenn du die Basis nicht explizit auf 1 gesetzt hast, beginnt der Array bei 0 zu zählen.
array(1) ist dann schon der zweite Wert.


grüsse

Dau-in
« Letzte Änderung: 21.08.07 - 07:42:55 von lotus blue »
Gruß Jason

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #16 am: 21.08.07 - 08:11:57 »
Grds. Frage mit jetzt fünf Werten (Feldern) funzt es.
Wenn es erweitert wird auf beispielsweise 8-12 Felder,
kommt der schöne "Subscrpit out of Range".

An was liegt das? ??? ::)
Gruß Jason

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #17 am: 21.08.07 - 08:22:53 »
Weil du dann auch überprüfen must wieviele Elemente dein Field Arra denn hat und nur genau so viele füllen darfst.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #18 am: 21.08.07 - 14:27:49 »
Zitat
Weiß jemand einen Rat?
Die CSV Datei so aufbauen, daß ein Delimiter verwendet wird, der nicht auch in den Daten vorkommt. Z.B ein ~
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Per LS CSV-Datei importieren bzw. per LDAP abholen
« Antwort #19 am: 21.08.07 - 14:31:34 »
Zitat
Weiß jemand einen Rat?
Die CSV Datei so aufbauen, daß ein Delimiter verwendet wird, der nicht auch in den Daten vorkommt. Z.B ein ~

Danke. Da ist des berühmt berücktigte 10erl schon gefallen. Darum habe ich gleich den Beitrag wieder gelöscht. Leider zu spät. Da kam deine Hilfe schon.
Trotzdem Danke.
Gruß Jason

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz