Autor Thema: ODBC - result.GetValue Problem  (Gelesen 1878 mal)

Offline MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
ODBC - result.GetValue Problem
« am: 23.01.08 - 11:39:09 »
Hi @ALL,

habe ein kleines Problem:

Mit einer ODBC Abfrage bekomme ich über result.GetValue("USER_OS_NAME") etc.
alle Informationen aus einem Query.

Allerdings nicht den uniqueidentifier aus der Datenbank und den brauche ich als Schlüssel zwischen Notes und der relationalen DB.

Dim Session As New NotesSession
   Dim db As NotesDatabase   
   
   Dim view As NotesView
   Dim lookupview As NotesView
   
   Dim configdoc As NotesDocument
   
   Dim Del As NotesDocument   
   Dim Con As New ODBCConnection   
   Dim Qry As New ODBCQuery   
   Dim res As New ODBCResultSet 
   
   Dim task As String
   Dim systemconnect As String
   Dim username As String
   Dim password As String
   Dim counter As Integer
   
   task = "CheckID"
   
   Set db = Session.currentdatabase   
   Set lookupview = db.GetView("lookup")
   Set configdoc = lookupview.GetDocumentByKey(task)
   
   systemconnect = configdoc.odbcconnection(0)
   username = configdoc.username(0)
   password = configdoc.password(0)
   sqlquery = configdoc.sql(0)
   
%REM

   ' alle Kunden vor neuem Import aus Notes DB löschen
   Dim collection As NotesDocumentCollection
   Set collection = db.AllDocuments
   If collection.Count >= 1  Then
      Call collection.RemoveAll ( True )
   End If

%END REM
   
    'Verbindungsaufbau gewählter Verbindung
   
   RetCode% = Con.ConnectTo(systemconnect,username,password)
   
   Set Qry.Connection = Con     '   
   Qry.SQL = sqlquery
   Set Res.Query = Qry
   Res.Execute
   RetCode% = Res.FirstRow   
   
   
   Do While RetCode% =True
      
      Dim Doc As New NotesDocument(db)         
      doc.form = "standardtest"
      doc.ID = Cstr(res.GetValue("R_OBJECT_ID"))
      doc.UserID = Cstr(res.GetValue("USER_OS_NAME"))
      counter = counter +1
      Print counter
      Call doc.save (True, True)
   'End If
      RetCode% = Res.NextRow
   Loop
   RetCode% = Res.Close( DB_CLOSE )
   RetCode% = Con.Disconnect
   

Der Wert doc.ID, der in das Feld geschrieben wird, ist immer FALSE.

Es handelt sich dabei um eine SQL Query auf eine MS SQL 2005 DB. Verschiedene Clients habe ich auch schon ausprobiert (Standard Treiber SQL von Windows für die ODBC Verbindung und auch einen SQL Native Client).

Die SQL Abfrage auf dem Server gibt die entsprechenden Werte aus !

Wie bekomme ich den Wert in das Notes-Dokument ?

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ODBC - result.GetValue Problem
« Antwort #1 am: 23.01.08 - 11:55:28 »
Ich würd mir als erstes den Wert
Code
 
res.GetValue("R_OBJECT_ID")
im Debugger anschauen. Heisst die Spalte in der MS-Datenbank wirklich R_OBJECT_ID  ???
Welchen Datentyp hat es in der MS-SQL? Vielleicht ein Datentyp, der sich in LotusScript nicht durch einen einfachen cast in einen String umwandeln läßt? Weil er vielleicht binär ist?

Da würd ich erstmal anfangen. Ansonsten erscheint mir der Code syntaktisch korrekt, wobei ich noch einen Errorhandler reinpacken würde und im Handler die Connection schliessen (wird oft gesagt und ich bin genau deshalb mal 3 Tage beim Kunden Geisterbahn gefahren).

Gruß Axel
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 Neopi

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: ODBC - result.GetValue Problem
« Antwort #2 am: 23.01.08 - 13:29:21 »
Hi,
überprüfe doch mal mit

sqlabfrage = qry.SQL
Print "SQL Abfrage", sqlabfrage

ob deine Abfrage richtig aus Deinem Config Dok übernommen wird.

Ich starte die Verbindung lieber so:
If conn.ConnectTo (odbcdb, user, password) Then....

Gruß
Martin

Verkompliziere das Einfache,
vereinfache das komplizierte
und Du lernst jeden Tag dazu.

Offline MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
Re: ODBC - result.GetValue Problem
« Antwort #3 am: 23.01.08 - 14:08:11 »
@Axel: die Vermutung habe ich auch, weiß aber nicht, wie ich die vernünftig konvertiert bekomme.

@Neopi: Abfrage läuft absolut sauber, weil ich die restlichen Informationen aus dem Resultset auslesen kann, nur die ID nicht :-(

Offline MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
Re: ODBC - result.GetValue Problem
« Antwort #4 am: 24.01.08 - 08:43:57 »
 ;) Problem behoben: Lag an der Konvertierung der ROWGUIID:

select CAST(R_OBJECT_ID AS VARCHAR(50)) AS UID , NAME from adressen

Danach schreibt Notes die ID sauber ins Dokument.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ODBC - result.GetValue Problem
« Antwort #5 am: 24.01.08 - 08:55:42 »
Danke dafür, dass du die richtige Antwort gepostet hast.
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 MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
Re: ODBC - result.GetValue Problem
« Antwort #6 am: 24.01.08 - 09:27:27 »
Ehrensache  ;D

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz