Autor Thema: DB2 Verbindung will nicht funktionieren!  (Gelesen 6815 mal)

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
DB2 Verbindung will nicht funktionieren!
« am: 17.02.05 - 16:58:04 »
Hallo,

Das Script habe ich in einer Maske - in einer Schaltfläche beim Ereignis Click drinnen:

Dim connect As New LCConnection  ("DB2")
     connect.Database = "DBName" -> das ist der gleiche Name den ich im LEI stehen habe
   connect.Userid = "Username"
   connect.Password = "PSW"
   
  ' try the connect
   On Error Goto Trap
   connect.Connect
   Print "Successfully connected to DB2."
   Exit Sub
Trap:
   Print "Connection failed with error " & Err & ": " & Error
   Exit Sub
End Sub

Dann bringt er mir gleich in der ersten Zeile über den Debugger eine Fehlermeldung:
Error creating product object, warum?

Es gibt noch diese Declaration Use"*..." wo mus ich die deklarieren, wo finde ich die Datei  bzw. wo sollte ich die hinspeichern?

Kann mir da wer helfen, danke im vorhinein!

Mfg Horst
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

y20frank

  • Gast
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #1 am: 17.02.05 - 19:07:41 »
Option Public
Uselsx "*LSXLC"

Ist das der vollständige Code...?

Nachtrag: Achsoja, kam ggf. vorher schon die Meldung "Error: Cannot load LSX library ‘db2’.”" ???
« Letzte Änderung: 17.02.05 - 19:27:17 von y20frank »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #2 am: 17.02.05 - 22:14:57 »
Hast Du auf Deinem Rechner einen DB2- Client installiert und ist dieser richtig konfiguriert ? Ohne DB2-Client geht das nämlich nicht...

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #3 am: 18.02.05 - 08:43:21 »
Hallo Tode,

danke für deie Antwort.
Wir haben hier in unserem Unternehmen eine AS400, auf die greifen wir über Client Express Access für Windows V 5.5 auf die AS 400 zu.

Von einem DB2 Client habe ich no nie was gehört, da habe ich noch überhaupt keine Erfahrung damit!!!
Wo bekomme ich die Software bzw. kann ich die irgendwo Downloaden? Bei IBM?

Danke für deine Hilfe im vorhinein !!

Mfg Horst
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #4 am: 18.02.05 - 08:56:56 »
Dann LASS ES... nimm ganz einfach anstatt der DB2- Connection eine ODBC- Connection, denn die Installation eines DB2-Clients ist eine Wissenschaft für sich...

Wenn Euer Server auf der AS/400 läuft braucht der natürlich keinen DB2 - Connector, dann musst Du in Deinem Script allerdings unterscheiden:

Dim LCCon As LCConnection
   if db.Server = "" 'Script läuft lokal'
      Set LCCon = New LCConnection( "DB2" )
      LCCon.Database = "DBName"
      LCCon.NoJournal = True
   Else 'Script läuft auf dem Server
      Set LCCon = New LCConnection( "ODBC2" )
      LCCon.Server = "DBName"
      LCCon.CommitFrequency = 1
   End If

Nachdem die Activity erst mal so gesetzt wurde, verstehen beide "Connectoren" die gleichen Befehle.

WICHTIG: DBName ist bei DB2 der Name der DB2 auf der AS/400 (müsste also der sein, der in Deinem LEI-Dokument funktioniert), bei ODBC2 muss der DBName der Name einer Benutzer-DSN in Deinen Datenquellen (ODBC) im Betriebssystem sein.

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #5 am: 18.02.05 - 09:39:51 »
Hallo Tode,
ich habe deine Code in eine Schaltfläche reinkopiert dann brint er mir in der 2 Zeile gleich:

Class or type name not found: LCCONNECTION

Was mus ich noch einbinden bzw. welche Variablendeklaration mus ich noch machen?

mfg horst
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #6 am: 18.02.05 - 09:45:50 »
Dir fehlt das Use- Statement für die lsxlc...

Du hast doch schon ein Script... da müssen doch alle nötigen Elemente drin sein... Ausserdem ist in der Lotus Connector and Connectivity Guide (help\lsxlc.nsf auf dem Server, auf dem LEI installiert ist) alles wunderbar mit Beispielen erklärt.

Lies Dir diese Hilfe GUT durch und benutze die Beispiele darin zum lernen... Und wenn Du damit nicht weiterkommst, dann melde Dich wieder... Denn auf diese Art und Weise, wie Du momentan vorgehst, rutschen wir nur von einem Fehler in den nächsten, und um Dich bei einer solchen "Learning by error-Hopping"- Aktion zu unterstützen habe ich weder die Zeit noch die Lust...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Marinero Atlántico

  • Gast
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #7 am: 18.02.05 - 10:17:44 »
Dann LASS ES... nimm ganz einfach anstatt der DB2- Connection eine ODBC- Connection, denn die Installation eines DB2-Clients ist eine Wissenschaft für sich...
Sehe ich anders. Oder?
Wenn die DB2 haben, gibt es auch einen DB2 Administrator und für die ist es kein Problem. Und eine Wissenschaft ist es auch nicht. Gibt da irgend so einen Cataloger Task oder so der wichtig ist. 
Der native Datenbank Client ist oft wesentlich schneller als eine Datenbankverbindung über ODBC. Sowas wirkt sich langfristig auf die Akzeptanz der Anwendung auf.
Ich bin ein extremer Freund bei so "Connectivity-Komponenten" wirklich sehr wählerisch zu sein. Nativ-DB2 sieht vielleicht auf den ersten Blick so aus wie ODBC, ist es aber nicht.   

@wuwu: Du mußt in die Optionen der Maske
Code
Uselsx "*LSXLC"
reintun.

Axel

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #8 am: 18.02.05 - 10:35:24 »
Hallo Axel,

das habe ich gemacht, das ist mein Script wo ich die Fehlermeldung bekomme die im Anhang fotografiert ist:

Sub Click(Source As Button)
   On Error Goto handler   
   Dim LCCon As LCConnection
   Dim db As NotesDatabase   
   Dim session As New NotesSession
   Dim Csession As New LCSession
   Set db =session.currentdatabase
   If db.Server= "" Then 'Script läuft lokal'
      Set LCCon = New LCConnection( "DB2" )
      LCCon.database = "***" -> Name wie im LEI
      LCCon.NoJournal = True
   Else 'Script läuft auf dem Server
      Set LCCon = New LCConnection( "ODBC2" )
      LCCon.Server = "***"
      LCCon.CommitFrequency = 1
      lccon.userid = "***"
      lccon.password = "***"
   End If
   ' try the connect
   lccon.Connect
   Print "Successfully connected"
   Exit Sub
handler:
   If (Csession.Status <> LCSUCCESS) Then
      Dim text As String
      Dim extcode As Long
      Dim exttext As String
      Call Csession.GetStatus (text,  extcode, exttext)
      If (Csession.Status = LCFAIL_EXTERNAL)Then
         Print "DB2 message: " & exttext & "  code #" & Cstr(extcode)
      Else
         Print "Connector message: " & text
      End If
   Else
      Print Error$
   End If
End Sub
-------------------------
Welche Verbindung wünscht er da, bzw. welchen Treiberangabe.

Bei mir ist auf dem lokalen Rechner installiert:
Lotus Notes SQL Driver 3.02 mit der ODBC Geschichte!
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Marinero Atlántico

  • Gast
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #9 am: 18.02.05 - 11:11:21 »
Für ODBC musst du in Systemsteuerung/Verwaltung/Datenquellen ODBC eine ODBC Datenquelle einrichten.
Trotzdem würde ich mit den DB2 Verantwortlichen Kontakt aufnehmen.
Ist natürlich ein klassisches Client Server Problem der Softwareverteilung.
Wenn der Zugriff auf DB2 vom Client gestartet wird, müssen alle Clients die das nutzen entsprechend eingerichtet sein.
Vorteil von ODBC ist, dass "nur" die Datenquelle eingerichtet sein muß. Dafür sollte es aber standardisierte Verteilungsverfahren geben.
Trotzdem ist eine ODBC-Verbindung zu DB2 wesentlich schlechter als eine native DB2 Verbindung.
Besser ist eigentlich, dass solche Enterprise Ressourcen wie DB2-Connections an einer Stelle verwaltet werden (Server). Das ist genau der Grund von Middleware, 3 Tier Umgebungen.
Theoretisch könntest du die DBConnection auf dem NotesServer einrichten und dort einen Agenten, der von deinem Button über agent.RunOnServer() aufgerufen wird. DAVON RATE ICH ABER DRINGEND AB, weil es sehr inperformant ist.

Axel

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #10 am: 18.02.05 - 11:25:08 »
... DAVON RATE ICH ABER DRINGEND AB, weil es sehr inperformant ist...

ganz abgesehen davon, dass es recht komplex werden kann, die Änderungen die der Agent macht, wieder ins Dokument zu bekommen, wenn das gerade im Moment bearbeitet wird ( Fehlermeldung: Another Copy of this Document...)...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #11 am: 18.02.05 - 13:14:13 »
Hallo Axel,

jetzt funktioniert das ganze, eine Verbindung hat bereits bestanden, ich habe den Namen der ODBC Verbindung eingetragen, und schon bin ich Connected!!!

Jetzt nochmals zur DB2 Verbindung:
Was mus ich machen damit ich über Notes auf die DB2 direkt zugreifen kann.
Mus ich da den IBM Acces DB2 for Lotus 6.5.1 installieren?

danke für eure Bemühungen im vorhinein!

Mfg Horst
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Marinero Atlántico

  • Gast
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #12 am: 18.02.05 - 13:26:54 »
Horst,

einen DB2 Client zu installieren, der remote auf eine DB2 auf AS400 zugreift gehört auch nicht zu meinen täglichen Aufgaben. Da müßte ich auch die entsprechende Doku lesen und va. ist das über ein Forum schwierig.

NOCHMAL: Hat man bei euch das DB2-Administrationspersonal wegrationalisiert  ???
Oder haben die ihren Email Postkorb gelöscht, ihr Telefon aus der Wand gerissen und die Tür zugesperrt.
Ich kann mir das nicht vorstellen, dass man bei solchen Aufgaben nicht mit den DB2 Leuten zusammenarbeitet.
 
Gruß Axel

Marinero Atlántico

  • Gast
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #13 am: 21.02.05 - 09:55:39 »
... DAVON RATE ICH ABER DRINGEND AB, weil es sehr inperformant ist...

ganz abgesehen davon, dass es recht komplex werden kann, die Änderungen die der Agent macht, wieder ins Dokument zu bekommen, wenn das gerade im Moment bearbeitet wird
Nö.
1. user macht eine Interaktion,
2. auf Grund der Interaktion startet der lokale Agent.
3. lokaler Agent ruft einen anderen Agenten per runOnServer auf.
4. run-OnServer Agent startet, macht seine Arbeit und terminiert.
5. lokaler Agent terminiert.

Während 2., 3., 4., 5. ist der Lotus Notes Client blockiert, weil - wie wir alle wissen - nicht multithreaded.
Das Problem ist aber wie gesagt die schlechte Performance. Von runOnServer.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #14 am: 21.02.05 - 10:22:55 »

1. user macht eine Interaktion,
2. auf Grund der Interaktion startet der lokale Agent.
3. lokaler Agent ruft einen anderen Agenten per runOnServer auf.
4. run-OnServer Agent startet, macht seine Arbeit und terminiert.
5. lokaler Agent terminiert.

ok... Wenn Der user während Punkt 1 im "edit- Mode" ist... dann darf der Agent auf dem Server das selbe Dokument nicht speichern, sonst bekommt der Benutzer beim Versuch zu speichern eine Meldung ala "Dokument wurde gespeichert... als Speicherkonflikt Speichern ?". Du musst also zwischen dem lokalen Agenten und dem RunOnServer- Agenten die Daten z.B. über ein Temporäres Dokument oder ein Profildokument übergeben.
Das meinte ich mit "nicht trivial" ... ich sagte ja nicht "unmöglich"...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Marinero Atlántico

  • Gast
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #15 am: 21.02.05 - 10:31:15 »
Tode,

ich meinte, dass sobald der User einen button oder was auch immer drückt, um den Agenten zu starten, dann ist der Notes Client unwiederbringlich von Hause aus blockiert, bis der Agent terminiert. Da braucht man sich als Entwickler gar nicht drum zu kümmern, weil das so bei Notes ist. 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #16 am: 21.02.05 - 10:45:43 »
@Marinero:
Ich weiss, was DU meintest, aber DU verstehst offensichtlich nicht, was ich meine...

Nochmal: Der Benutzer bearbeitet ein Dokument.

Im Dokument drückt er einen Button, der Daten ausliest.. Dieser Button lässt einen Agenten auf dem Server laufen... Dieser muss seine Daten ja IRGENDWOHIN speichern... Wenn er dazu das Dokument selbst nimmt, muss er das Dokument speichern, um seine Änderungen nicht zu verlieren.

So lange der Agent seine Arbeit tut, ist natürlich der Client gesperrt.
Danach kommt der User wieder auf sein Dokument zurück und kann weiter arbeiten. Wenn er nun versucht, das Dokument zu speichern, wird er eine Fehlermeldung erhalten, dass das Dokument in der Zwischenzeit geändert wurde, und er es nur als Konfliktdokument speichern kann...

Diese Meldung kannst Du nur verhindern, indem Du:

1. ein "Temp"_ Dokument zum zwischenspeichern der Daten verwendest, aus dem der "Frontend"- Agent die Daten ins Echt- Dokument zurückschreibt...

2. das Dokument, das der User im Edit- Mode offen hat, vor dem Start des Background- Agents (runonserver) schliesst und gegebenenfalls nachher wieder öffnest.

So, nun habe ich keine Lust mehr, wenn Du nun immer noch nicht weisst, was ich von Dir will, dann lass es einfach auf sich beruhen, das tue ich nämlich jetzt auch...

Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Marinero Atlántico

  • Gast
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #17 am: 21.02.05 - 10:52:40 »
ok. In meinem Kopf war ein konkreter Fall, in dem Nebenbedingung 1 zutraf.
Klar.  ;D
Der Serveragent darf nicht direkt in das Dokument schreiben und die Werte müssen aus den Server-Kontext auf den Client-Kontext geschrieben werden und das geht nur über ein Dokument.



Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: DB2 Verbindung will nicht funktionieren!
« Antwort #18 am: 21.02.05 - 10:55:45 »
siehst Du, wir sind ja doch einer Meinung...  ;D

Das war das einzige, was ich sagen wollte mit "nicht ganz trivial"... Klar, wenn man das schon mal selbst gemacht hat, hat man natürlich genau diese Klippen schon umschifft, und damit WIRD es trivial... Aber halt nicht für einen Neuling auf dem Gebiet....  ;)

Also... jetzt ist aber wirklich Schluss mit der Diskussion...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz