After record change Ereignis

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

ehvbs
*
Beiträge: 10
Registriert: Do, 13.07.2006 09:02
Wohnort: Kiel

After record change Ereignis

Beitrag von ehvbs »

Hallo,

ich möchte in einem OOBase Formular zu jedem Record die zugehörige externe
Grafik (.tif Datei) anzeigen. Zu diesem Zweck benutze ich folgenden Code

Code: Alles auswählen

Sub onCurrent( oEv As Object )
  Const csPath = "<PfadAufMeineTifs>"
  Dim oForm       As Object : oForm       = oEv.Source
  Dim oSleFiNa    As Object : oSleFiNa    = oForm.getByName( "txtC2" )
  Dim oPicDisplay As Object : oPicDisplay = oForm.getByName( "picDisplay" )
  Dim sFSpec      As String : sFSpec      = oSleFiNa.Text
  MsgBox sFSpec
  sFSpec = csPath + sFSpec
  oPicDisplay.ImageURL = ConvertToURL( sFSpec )  
End Sub
zur Behandlung des "After Record Change" events. Beim Öffnen des Formulars
ist oSleFiNa.Text allerdings leer; erst wenn ich durch die Datensätze
blättere, funktioniert die Anzeige der Grafiken wie gewünscht.

Was kann ich tun, um dieses Problem zu beseitigen?

Vielen Dank

ehvbs
ehvbs
*
Beiträge: 10
Registriert: Do, 13.07.2006 09:02
Wohnort: Kiel

Beitrag von ehvbs »

Hallo,

anscheinend funktioniert der unmittelbare Zugriff auf die Ergebnismenge
(rowset/recordset) besser als der über die Controls und ihre BoundFields:

Code: Alles auswählen

Sub onCurrent( oEv As Object )
  Const csPath = "<PfadAufMeineTifs>"
  Dim oForm     As Object : oForm     = oEv.Source
  Dim sFSpec    As String : sFSpec    = oForm.getColumns.getByName( "C2" ).getString()
  oForm.getByName( "picDisplay" ).ImageURL = ConvertToURL( csPath + sFSpec )
End Sub
Da dieser Code nicht durch Programmieren, sondern Hacken entstanden
ist, würde es mich beruhigen, wenn interessierte Fachleute ihn mal
korrekturlesen würden.

Vielen Dank

ehvbs
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

hey ehvbs,
Da dieser Code nicht durch Programmieren, sondern Hacken entstanden
ist, würde es mich beruhigen, wenn interessierte Fachleute ihn mal
korrekturlesen würden.
Was verstehst du unter "Hacken"? Der Code sieht doch ganz normal aus und ist so ok. Es gibt halt viele Wege zum Ziel - und wenn er funktioniert - bestens :D
Im Übrigen hast du natürlich recht: Es ist immer besser, direkt mit dem Rowset zu arbeiten - die Formular-Controls dienen ja auch nur als "Anzeige" der Inhalte.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ehvbs
*
Beiträge: 10
Registriert: Do, 13.07.2006 09:02
Wohnort: Kiel

Beitrag von ehvbs »

Hi Toxitom,

Unter "Programmieren" verstehe ich, dass man auf der Grundlage von
sorgfältig studierter Dokumentation und getestetem Code bei jeder
neuen Zeile sagen kann, warum das so geschrieben werden muss
und dass das so funktionieren wird. Ich beschäftige mich erst seit
Kurzem mit OpenOffice und erlebe dauernd Überraschungen.

So hatte ich angenommen, dass die gebundenen Controls ihrer
Anzeigepflicht auch schon beim Laden des Formulars nachkommen,
musste dann aber erfahren, dass sie da noch nichtmal zur Verfügung
stehen. Wenn man dann im "StarOffice 8 Programming Guide for BASIC"
lesen muss, das alles sei zu kompliziert als dass es erklärt werden könne,
fängt man schon an, sich Sorgen zu machen. Und genau das ist es, was
ich unter "Hacken" verstehe: Man schreibt Code, der einen nicht ruhig
schlafen läst.

Umso willkommener war mir Dein Urteil. Vielen Dank!

ehvbs
Wurstsuppe
**
Beiträge: 23
Registriert: Do, 23.02.2006 18:19

Beitrag von Wurstsuppe »

Ich versuche auch, ein Bild in einem Formular darzustellen. Beide Beispiele oben funktionieren bei mir nicht (ich beschäftige mich aber erst eine Woche mit BASIC).

Zu folgenden habe bis jetzt noch keine Doku gefunden:

Code: Alles auswählen

.Source
Wo steht was darüber?

Meine Tabelle heisst "BILDPFADE", der Pfad steht in "BILDURI".
Ich habe mir etwas zusammen programmiert, was das gewünschte macht:

Code: Alles auswählen

Sub OnClickURL( oEv as Object )
  Dim oDocument As Object
  Dim oForm As Object
  Dim oText As Object
  Dim oText1 As Object
  Dim oText2 As String
  oDocument = ThisComponent
  oForm     = oDocument.DrawPage.Forms.getByName("BILDPFADE")
  oText     = oForm.GetByName("BILDURI")
  oText1    = oText.gettext()
  oText2    = oText1.getstring()
  oForm.getByName("ImageControl").ImageURL = ConvertToURL(oText2)
End Sub
Sieht irgendwie völlig anders aus als obige Beispiel. Bleibt immer noch das Problem, dass beim Laden des Formulars das Bild nicht angezeigt wird, sondern erst nach einem Datensatzwechsel.

Kann mir jemand helfen? Danke sehr.
Antworten