Autor Thema: LS:DO Addrow Probleme  (Gelesen 3254 mal)

Offline Günther Rupitz

  • Senior Mitglied
  • ****
  • Beiträge: 362
  • Geschlecht: Männlich
LS:DO Addrow Probleme
« am: 14.07.11 - 12:23:49 »
Ich verwende tw. LS:DO+ODBC zum hinzufügen von Datensätzen.

Über ODBCResultSet.SetValue werden die einzelnen Spaltenwerte gesetzt.
Wenn beim einfügen eines neuen Datensatzes ein Fehler auftritt würde ich mir gerne im Log das entsprechende SQL Statement speichern bei dem der Fehler aufgetreten ist.

Nur wie bekomme ich das SQL Statement raus?
Da ich dieses nicht von Hand erstellt habe sondern das die Klassen habe erledigen lassen bekomme ich es ja über ODBCQuery.SQL nicht heraus.

Offline ghostmw

  • Aktives Mitglied
  • ***
  • Beiträge: 201
  • Geschlecht: Männlich
    • BELOS - Raum+Ressourcenmanagement unter Lotus Notes
Re: LS:DO Addrow Probleme
« Antwort #1 am: 14.07.11 - 15:12:20 »
Hi,

wie wärs damit, daß du eine eigene Klasse schreibst, die von der ODBCResultSetClass abgeleitet ist, und du bei jedem SetValue den Wert cached und beim UpdateRow die Liste wieder löscht ?

Dann hast du im Fehlerfalle die Werte und könntest dir das SQL-Statement zusammenbauen.

z.B.

Zitat
Public Class My_ODBCResultSet as ODBCResultSet

private cacheValues List as Variant

sub new()
   ...
end sub

Public Function SetValue( varID as Variant , value as Variant ) as Integer

   cacheValues ( Cstr ( varID ) ) = value

   if isNumeric ( varID ) then
       call ODBCResult..SetValue ( Cint ( varID ) , value )
   else
      call ODBCResult..SetValue ( CStr ( varID ) , value )
   end if

end Function

Public Function UpdateRow

     erase cacheValues

     call ODBCResult..UpdateRow

end function

function getSQLStatement as String
    dim strSQL as String

    forall value in cacheValues
        strSQL = strSQL + " , " + ListTag(value) + " = '" + Cstr ( value ) + "'
    end forall

    getSQLStatement = strRight ( value , " , " )

end function

...

end class

Sollte eigentlich klappen ...
« Letzte Änderung: 14.07.11 - 15:18:23 von ghostmw »
Grüße
Marco Weller
Lotus Domino / Lotus Notes seit 1996 (ab 4.5x)

Offline Günther Rupitz

  • Senior Mitglied
  • ****
  • Beiträge: 362
  • Geschlecht: Männlich
Re: LS:DO Addrow Probleme
« Antwort #2 am: 15.07.11 - 08:55:24 »
hallo

das geht so leider nicht da man die notes-eigenen klassen nicht überladen kann.

das hätte ich mir schon ziemlich oft gewünscht dass das möglich wäre ....

da die klasse wahrscheinlich im hintergrund ja sicher den sql string zusammenstellt wäre es doch irgendwie sinnvoll wenn man den auch auslesen könnte.

gibts noch andere vorschläge?

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: LS:DO Addrow Probleme
« Antwort #3 am: 15.07.11 - 09:25:41 »
überladen? Ich glaube Du verwechselst da das ein oder andere Prinzip... Marco verwendet hier die Klassenvererbung...

Und das funktioniert ziemlich sicher genau so... Hast Du es denn probiert???

Die wichtigen Zeilen in obigem Script sind:

Public Class My_ODBCResultSet as ODBCResultSet -> Vererbung

 call ODBCResult..SetValue ( Cint ( varID ) , value ) -> Aufruf des SetValue der übergeordneten Klasse

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 Günther Rupitz

  • Senior Mitglied
  • ****
  • Beiträge: 362
  • Geschlecht: Männlich
Re: LS:DO Addrow Probleme
« Antwort #4 am: 15.07.11 - 10:43:31 »
hallo tode

ich weiss, überladen heisst es korrekterweise bei den operatoren, bei den klassen ist es die vererbung, du hast recht.

es ändert aber nichts daran dass man die notes-eigenen klassen nicht vererben kann, und ja ich habe es auch dieses mal wieder versucht in der hoffnung dass es vielleicht bei den ODBC klassen funktioniert.

Fehlermeldung "Cannot Subclass: ODBCResultSet"

ist auch in den diversen notes foren nachzulesen:

http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/98d9c35253e1cf1285257272007ef682?OpenDocument

Offline ghostmw

  • Aktives Mitglied
  • ***
  • Beiträge: 201
  • Geschlecht: Männlich
    • BELOS - Raum+Ressourcenmanagement unter Lotus Notes
Re: LS:DO Addrow Probleme
« Antwort #5 am: 15.07.11 - 10:52:08 »
... schade.

Dann muss ich erstmal passen, wenn's nicht noch einen undokumentieren Befehl gibt, um den SQL auszuwerten.
Grüße
Marco Weller
Lotus Domino / Lotus Notes seit 1996 (ab 4.5x)

Offline Günther Rupitz

  • Senior Mitglied
  • ****
  • Beiträge: 362
  • Geschlecht: Männlich
Re: LS:DO Addrow Probleme
« Antwort #6 am: 15.07.11 - 10:57:38 »
ich habs jetzt halt mal so gelöst dass ich bei jedem SetValue eine Liste ergänze und dann den listeninhalt bei auftreten eines odbc fehlers in meine openlog funktion mitgebe.
nur schöne lösung ist das halt keine.

Offline Günther Rupitz

  • Senior Mitglied
  • ****
  • Beiträge: 362
  • Geschlecht: Männlich
Re: LS:DO Addrow Probleme
« Antwort #7 am: 15.07.11 - 11:52:39 »
wo wir aber schon beim thema sql sind hier eine zweite frage:

ich baue mir oft sql statements von hand zusammen, habe mir schon oft überlegt dafür eine klasse zu schreiben.
eine suche im netz ob es sowas für LS schon gibt war bisher immer ergebnislos, kennt hier vielleicht jemand sowas?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz