Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: tbrendel am 08.08.06 - 14:17:48

Titel: Lotus <- Navision
Beitrag von: tbrendel am 08.08.06 - 14:17:48
Hat schon mal jemand per SQL Befehle aus einer Navision Datenbank
Infos geholt?...also per lotusscript und dem

Uselsx "*LSXODBC"

Habe da ein Problem, das ich zwar von Access aus eine SQL-Abfrage absetzen kann, die über zwei Tabellen mit einem "JOIN" abfragen kann..aber LOTUS NOTES eben nicht...
Hier habe ich mich bisher beholfen das ich zwei einzelne Abfragen gemacht habe.
Kennt das jemand?
Titel: Re: Lotus <- Navision
Beitrag von: koehlerbv am 08.08.06 - 18:40:40
Hilft Dir eventuell dieser Thread (http://atnotes.de/index.php?topic=19003.msg185645#msg185645) weiter?

Bernhard
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 08:57:53
Nein, leider nicht...

ich bin folgendermaßen vorgegangen:

Ich habe in Access eine abfrage über ODBC gemacht. Dann habe ich mir die Syntax angeschaut im SQL-Editor und diese Abfrage dann in Lotus Notes übernommen.

Dabei habe ich erstmal so festgestellt das von Lotus Notes
es mir nicht möglich war zwei Tabellen gleichzeitig in einer abfrage zu erreichen. Aber vielleicht benötigt "Lotus Notes SQL" ja dabei eine
spezielle Syntax?????

Oder der "Lotus Notes SQL-Treiber" hat damit probleme????

Navision -> Access geht jedenfalls (Hilft mir aber nicht weiter)

Ich stocherer da ein wenig im Dunklen herum weil ich nicht den Finger auf die Fehlerquelle legen kann

In Access hiess dieses SQL Statement

SELECT Jobplan.Job_No_, Ressource.No_
FROM Jobplan INNER JOIN REssource ON Jobplan.No_ = Ressource.No_


Habe also schon mit einem INNER JOIN arbeiten wollen
Titel: Re: Lotus <- Navision
Beitrag von: koehlerbv am 09.08.06 - 09:07:32
Jo, Notes SQL ist schwach auf der Brust. Aber das verwendest Du doch gar nicht, sondern einen ODBC-Treiber für Dein Navision-System. Und der sollte das eigentlich beherrschen ...
Leider habe ich derzeit keinen Zugang zu einem Navision-System, sonst hätte ich das hier mal nachgebaut. So stehe ich auch im Nebel ...

Bernhard
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 10:16:15
ja klar verwende ich ODBC für den Zugriff....aber um dann auf daten zuzugreifen muss ich doch eine
"SQL" Anweisung schreiben.....(oder gehts auch anders??????????)

ich habe das mal hier in dem Code gemacht:

Schnipp-----------------------------------------------------------

   Dim con As New ODBCConnection
   Dim qry As New ODBCQuery
   Dim result As New ODBCResultSet
   Dim result2 As New ODBCResultSet
   Dim result3 As New ODBCResultSet
   Dim Session As New NotesSession
   Dim db As NotesDatabase
   Dim formular As New NotesDatabase("","Formulare.nsf")
   Dim collection As NotesDocumentCollection
   Dim doc, formulardoc, searchdoc As NotesDocument
   Dim firstName, lastName As String
   Dim nam As NotesName
   Dim view, ressourceview, projektview As NotesView
   
   Set db = session.CurrentDatabase
   Set collection = db.AllDocuments
   Set view = db.GetView("Ressourcen2")
   Set ressourceview = db.GetView("Ressourcen")
   Set projektview = db.GetView("Projekte")
   
     REM erstmal alle Dokumente löschen
   Call collection.RemoveAll(True)
   
   If Not con.ConnectTo("Navision") Then
      Messagebox "Could not connect to Navision",, _
      "Error connecting"
      Exit Sub
   End If
   Set qry.Connection = con
   Set result.Query = qry
   Set result2.Query = qry
   Set result3.Query = qry
   
   REM erstmal alle Projektköpfe löschen
   searchform$ = {FORM = "Projektkopf"}
   Set collection = db.Search(searchform$, Nothing, 0)
   Call collection.RemoveAll(True)
   
   qry.SQL = "SELECT Nr_,Beschreibung,geplantes_Startdatum, geplantes_Endedatum, Status, " &_
   "Rech__an_Deb__Nr_ , Name, Projektbuchungsgruppe, Startdatum, erwartetes_Enddatum, ""GeschaftschancePct""  " &_
   "FROM Projekt WHERE Projekt.Nr_ LIKE 'PN%' AND (Status = 'Auftrag' OR Status = 'Angebot')"
   
   result.Execute
   If result.IsResultSetAvailable Then


Schnapp------------------------------------------------------
Titel: Re: Lotus <- Navision
Beitrag von: koehlerbv am 09.08.06 - 10:29:34
Sorry, Missverständnis: "Notes SQL" ist ein eigener Treiber (zum Zugriff auf Notes-Daten per "SQL" oder was davon eben mit diesem Treiber funktioniert), und daher war ich verwundert, dass Du diesen Begriff in diesem Zusammenhang erwähnt hast.

Ich hoffe, wir haben hier jemanden, der gerade eine Situation wie die Deinige nachstellen kann (oder das Problem auf Anhieb sieht).

Bernhard
Titel: Re: Lotus <- Navision
Beitrag von: klaussal am 09.08.06 - 10:34:56
Da kann auch nix bei rauskommen.

Sieh Dir mal im Debugger das Feld QRY.SQL an. Ich sehe da fast nur Unterstriche...

Code
SELECT Nr_,Beschreibung,geplantes_Startdatum, geplantes_Endedatum, Status, Rech__an_Deb__Nr_ , Name, Projektbuchungsgruppe, Startdatum, erwartetes_Enddatum, ""GeschaftschancePct""  FROM Projekt WHERE Projekt.Nr_ LIKE 'PN%' AND (Status = 'Auftr
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 10:45:39
übrigens das was ich hier kopiert habe ist LAUFFÄHIGER Code..mir geht es rein um den zugriff wenn ich ZWEI tabellen benutzen will.......

Die UNterstriche sind leider dafür da weil Navision viele Felder hat die  mit einem Blank oder mit einem Punkt versehen sind (Also Nr., oder "geplantes Endedatum")....die wandelt der "treiber" entsprechend um...das muss also so sein.
Du könntest also die unterstriche ignorieren die zwingend notwendig sind.
Titel: Re: Lotus <- Navision
Beitrag von: klaussal am 09.08.06 - 10:48:51
Ok.

Dann versuch doch mal einen gaaanz einfachen Select, ob der funzt. Und dann die Abfrage langsam aufbohren, bis es knallt. Dann siehst Du ja, voran es liegt.
Titel: Re: Lotus <- Navision
Beitrag von: Thomas Schulte am 09.08.06 - 10:51:31
Feldnamen mit Unterstrichen sind aber in manchen Datenbanken erlaubt Klaus.

Aber ich hab eine andere Vermutung. Du redest davon das du das SQL Konstrukt mit Access ausprobiert hast und danach von einer Navision Datenbank. Du weist schon das die unterschiedlichen Relationalen Datenbanken was SQL angeht teilweise unterschiedliche Stände und SQL Dialekte haben und das man Access absolut nicht als Beispiel für ein gültiges SQL Statement hernehmen kann und das der ODBC Connect da wiederum eine eigene Abart davon darstellen kann.

Ich würd mich da rantasten. Fang doc erst einmal mit einem simplen "Select * From Projekt" an.


Wie wärs dann mal wenn du den nicht funktionierenden Teil deines Codes posten würdest. Es kann ja dann eigentlich nur an deinem SELECT Statement liegen. Denn der INNER JOIN funktioniert.
Titel: Re: Lotus <- Navision
Beitrag von: klaussal am 09.08.06 - 10:57:39
@Thomas,

ich vermute auch, dass es an dem Select liegt. Deshalb mein Vorschlag, klein anfangen + dann langsam aufbohren.
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 11:09:22
das hatte ich ja gemacht......

dieses Select was ihr da seht FUNKTIONIERT...das ist ein einfaches select

sobald ich aber ein einfaches select mit einem INNER JOIN versuche habe ich als ergebnis
KEIN RESULTSET

habe also erstmal versucht


SELECT Jobplan.Job_No_, Ressource.No_ FROM Jobplan

da bekam ich ein resultset

nächster schritt

SELECT Jobplan.Job_No_, Ressource.No_ FROM Jobplan INNER JOIN REssource ON Jobplan.No_ = Ressource.No_

kein resultset!!!!!

dann ein versuch mit einem speziellem Errorhandler ergab immerhin folgende
Fehlermeldung

[Microsoft Corporation][Microsoft Business Solutions-Navision ODBC Driver] Unexpected extra token: JOIN    ????????? obwohl es von Access dieses join angenommen hatte....das versteh ich nciht
 
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 11:21:56
meine vermutung ist eher das eine SPEZIELLE SYNTAX notwendig ist. Hat jemand andere
versuche mit einem anderen aufbau von INNER JOIN????
Titel: Re: Lotus <- Navision
Beitrag von: klaussal am 09.08.06 - 11:47:31
Versuche mal diese Syntax:

SELECT * FROM Mitarbeiter INNER JOIN Projekte ON (Mitarbeiter.Nachname = Projekte.Nachname AND Mitarbeiter.Vorname = Projekte.Vorname)
Titel: Re: Lotus <- Navision
Beitrag von: Thomas Schulte am 09.08.06 - 12:25:48
Und wenn das nicht geht lass mal das INNER weg.
INNER Join ist nämlich als Join Typ der Standard Typ im ANSI Stil, wenn kein anderer Join Typ angegeben wird.

Nein das ist nicht auf meinem Mist gewachsen. Fachbuch lesen bildet  8)
Titel: Re: Lotus <- Navision
Beitrag von: Thomas Schulte am 09.08.06 - 12:37:49
Es kann auch sein das der Navision ODBC Driver da eine Macke hat. Zumindest wird hier (http://www.easysoft.com/applications/microsoft-navision/jdbc-odbc.html) darauf hingewiesen.

Und was dann das funktioniert von Acces aus angeht. Access ist ein MS Produkt, Navision ist ein Access Produkt. Noch Fragen ....
Titel: Re: Lotus <- Navision
Beitrag von: Thomas Schulte am 09.08.06 - 13:24:44
Navision ist kein Access sondern ein MS Produkt. Mann red ich einen Blödsinn.

Aber hier (http://www.mibuso.com/forum/viewtopic.php?t=7536) gibt es eine interessante Aussage zu dem Thema join und InnerJoin. Die behaupten nämlich das das nicht unterstützt wird.
Hier (http://www.dbforums.com/archive/index.php/t-482543.html) hat jemand ein ähnliches Problem von VB aus.
Such mal in Google nach
Unexpected extra token: JOIN
Und du dürftest ein paar Einträge dazu finden.

Kannst du einen anderen ODBC Treiber ausprobieren?
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 13:54:38
leider kann ich nur DIESEN einen ODBC treiber nehmen, weil es keinen anderen gibt......

und beide haben leider das gleiche Problem, aber keiner hat eine Lösung dafür gefunden!!!!
Titel: Re: Lotus <- Navision
Beitrag von: klaussal am 09.08.06 - 14:24:35
http://www.datadirect.com/products/odbc/odbcoverview/index.ssp

Noch ein ODBC-Treiber.
Titel: Re: Lotus <- Navision
Beitrag von: koehlerbv am 09.08.06 - 14:29:09
Klaus, der ist aber ganz bestimmt nicht für Navision freigegeben worden. Und da wäre ich zumindest gaaaaaaanz vorsichtig - falls Navision sich von dem Treiber überhaupt etwas überbügeln lässt bzw. einen Zugriff gewährt.

Bernhard
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 15:03:04
Also bei uns benutzen wir den von Microsoft selber..ich denke mit dem sollten wir die wenigsten schwierigkeiten haben.....

nur eben in zusammenhang mit lotus notes ist mir das aufgefallen
Titel: Re: Lotus <- Navision
Beitrag von: Thomas Schulte am 09.08.06 - 15:10:52
Ich formulier das jetzt einmal vorsichtig.

Es könnte sein, das es mit Access funktioniert, weil sowohl Access, als auch der Navision ODBC Treiber aus dem gleichen Haus stammen. Wäre ja nicht das erste Mal das MS einen internen Informationsvorsprung ausnutzt.

Interessant wäre es zu prüfen, ob es wirklich an der ODBC Connector Class von Domino liegt.

Hier wäre zum Beispiel ein nicht MS based SQL Frontend für die Ausführung interessant. Vorzugsweise eines mit CommandLine Eingabe.

Alternativ könntest du ja auch einen Connect im Client mit JDBC ausprobieren. Ich hab mal gehört, das dieses etwas anders arbeiten soll als der ODBC Connect.
Titel: Re: Lotus <- Navision
Beitrag von: flaite am 09.08.06 - 15:26:05
ich geb den String von SQL-Statements grundsätzlich immer aus.

also:
Code
dim strSQLStatement as String
strSQLStatement = "SELECT Nr_,Beschreibung,geplantes_Startdatum, geplantes_Endedatum, Status, " &_
   "Rech__an_Deb__Nr_ , Name, Projektbuchungsgruppe, Startdatum, erwartetes_Enddatum, ""GeschaftschancePct""  " &_
   "FROM Projekt WHERE Projekt.Nr_ LIKE 'PN%' AND (Status = 'Auftrag' OR Status = 'Angebot')"
   
print "strSQlstatement=" + strSQLStatement

 qry.SQL = strSQLStatement
vielleicht ist der Fehler ja irgendwo beim zusammenbauen dieses Strings.


Titel: Re: Lotus <- Navision
Beitrag von: klaussal am 09.08.06 - 15:57:34
@Bernhard,

kann man ja testen. 30 Tage lang. Wenn nicht, eben Pech gehabt. Oder Versuch macht klug.
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 16:34:35
muss dazu aber sagen das wir die navisioneigene Datenbank nutzen und nicht einen wald und wiesen MS SQL server...da hat sich das dann mit den fremden produkten
Titel: Re: Lotus <- Navision
Beitrag von: koehlerbv am 09.08.06 - 16:37:02
muss dazu aber sagen das wir die navisioneigene Datenbank nutzen ...

Und spätestens bei der Authentifizierung durch einen anderen ODBC-Treiber ist dann schon Schluss, Klaus  ;)

Bernhard
Titel: Re: Lotus <- Navision
Beitrag von: tbrendel am 09.08.06 - 16:41:31
also kann ich keinen anderen "mal eben so" testen
Titel: Re: Lotus <- Navision
Beitrag von: koehlerbv am 09.08.06 - 16:42:22
Das wollte ich damit ausdrücken.
Titel: Re: Lotus <- Navision
Beitrag von: Thomas Schulte am 09.08.06 - 16:49:26
Wenn ich das jetzt hätte dann würde ich rein aus Neugier hergehen und mir den ganzen Zirkus mit einem anderen SQL Frontend auch noch mal anschauen.