Hi Leute
Hab heute ein bisschen mit meinem ersten Formular gespielt und einiges klappte schon ganz gut. Nun habe ich ein Problem, bei dem ich ein wenig Hilfe benötige. Folgende Situation: Ich habe eine Abfrage auf eine Umsatz-Tabelle mit dem Fehler "fehlende Kostenstelle" an das Grid-Control gebunden. Also, das Grid-Ctrl enthält beim Formularstart alle Sätze, bei denen das Feld "Kostenstelle" leer ist.
Nun möchte ich gerne die Record-No (Key, long int, auto-incr) des Satzes auslesen, auf dem der Satzzeiger seht... eben der aktuelle Satz. Wie komme ich in einem Event-Handler an diesen Feldinhalt ran, oder an ein beliebiges anderes Feld dieses Satzes? Wenn ich dann die RecNo hätte, könnte ich bei Enter in einer korrespondierenden Listbox die Kostenstelle aus diesem Listbox-Item via SQL-Update where RecNo = 123xyz auf die DB-Tabelle zurückschreiben und den "Fehler" damit beheben. Was mir fehlt ist ein kurzer Code-Schnipsel, wie ich die Tabelle, den Satz, das Feld mit Row() und Col() adressiere... oder wenns geht, über Namens-Referenzen und wie ich ein Feld auslesen kann.
Und das zweite Problem ist: Wie kann ich dann das Grid updaten, damit die zurückgeschriebene Kostenstelle im richtigen Feld erscheint. Ein Requery (oder sowas ähnliches) geht nicht, weil ja der Satz wegen behobenem Fehler jetzt ja gar nicht mehr gefunden würde.
Und nun als letztes: Ist der Satz upgedatet, würde ich gerne ein Skip(+1) (wenn nicht EOF) durchführen. Gibts dafür vielleicht auch eine Grid-Object-Methode ?
Danke im Voraus für eine kleine Hilfe.
vg, Maddin
Get Form->DBGridCtrl->FieldVal
Moderator: Moderatoren
Re: Get Form->DBGridCtrl->FieldVal
Hallo Maddin, mit Basic könnte es so gehen:
Code: Alles auswählen
sub read_record_from_grid
Dim oDoc as Object
Dim oForm as Object
Dim oGrid as Object
Dim oColumn as Object
oDoc = ThisComponent
oForm = oDoc.drawpage.forms(0)
'Wenn es das einzige Formular ist sonst vielleicht: oForm = oDoc.drawpage.forms.getByName("Formularname")
oRow=oform.row 'hier wird der Record ausgegeben
oGrid = oForm.getByName("grd_Name")
oColumn=oGrid.getbyName("ID")
oID=oColumn.value 'Wert der Spalte "ID" im Grid
End Sub
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Get Form->DBGridCtrl->FieldVal
Hallo
Danke für die paar Zeilen... und sie haben mir schon weitergeholfen. Allerdings hat genau die entscheidende Zeile zu einer "Exeption" geführt, und zwar: "oGrid.getByName("TextFeld")
Diese Zeile funktioniert:
oColumn=oGrid.getbyIndex(1)
Diese Zeile nicht:
oColumn=oGrid.getByName("TextFeld")
Die Fehlermeldung ist: NoSuchElemementExeption. Im Moment weiss ich noch nicht, ob die Klassen-Methode getByName() nicht existiert, oder ob er "TextFeld" nicht findet. Ich habe mir allerdings die Klassen-Elemente von oGrid eine Zeile vor der Exception angesehen... oGrid ist m. E. korrekt referenziert. Im Moment bin ich ein wenig ratlos.
Was kann das Problem sein?
BTW: Ich habe mehrfach von irgendwelchen Treibern, Erweiterungen, anderen Datenbanken, etc. gelesen. Ich nutze OO 3.3 in der reinen Version und ich möchte mein kleines Progrämmchen am liebsten einfach nur mit "Boardmitteln" lösen....sofern das überhaupt möglich ist. Muss ich da noch was beachten?
vg, Maddin
Danke für die paar Zeilen... und sie haben mir schon weitergeholfen. Allerdings hat genau die entscheidende Zeile zu einer "Exeption" geführt, und zwar: "oGrid.getByName("TextFeld")
Diese Zeile funktioniert:
oColumn=oGrid.getbyIndex(1)
Diese Zeile nicht:
oColumn=oGrid.getByName("TextFeld")
Die Fehlermeldung ist: NoSuchElemementExeption. Im Moment weiss ich noch nicht, ob die Klassen-Methode getByName() nicht existiert, oder ob er "TextFeld" nicht findet. Ich habe mir allerdings die Klassen-Elemente von oGrid eine Zeile vor der Exception angesehen... oGrid ist m. E. korrekt referenziert. Im Moment bin ich ein wenig ratlos.
Was kann das Problem sein?
BTW: Ich habe mehrfach von irgendwelchen Treibern, Erweiterungen, anderen Datenbanken, etc. gelesen. Ich nutze OO 3.3 in der reinen Version und ich möchte mein kleines Progrämmchen am liebsten einfach nur mit "Boardmitteln" lösen....sofern das überhaupt möglich ist. Muss ich da noch was beachten?
vg, Maddin
Re: Get Form->DBGridCtrl->FieldVal
Vielleicht hast Du den Titel der Spalte verwendet?
Den "Name" der Spalte findest Du im Entwurfsmodus, wenn Du mit einem Rechtsklick auf den Spaltenkopf gehst und dann unten auf "Spalte". Die Kopfzeile im Grid ist der "Titel" der Spalte.
Ich empfehle Dir das "Xray Tool" zu installieren, damit kann man sich die Struktur von allen OOo Dokumenten ansehen.
http://bernard.marcelly.perso.sfr.fr/index2.html
Den "Name" der Spalte findest Du im Entwurfsmodus, wenn Du mit einem Rechtsklick auf den Spaltenkopf gehst und dann unten auf "Spalte". Die Kopfzeile im Grid ist der "Titel" der Spalte.
Ich empfehle Dir das "Xray Tool" zu installieren, damit kann man sich die Struktur von allen OOo Dokumenten ansehen.
http://bernard.marcelly.perso.sfr.fr/index2.html
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Get Form->DBGridCtrl->FieldVal
Hallo
Oh Gott... watt 'ne üble Falle... natürlich habe ich den Titel verwendet, der natürlich gleichlautend mit dem Data Dictionary der Datenbank und auch dem RecordSet war ... wer soll denn bloß auf sowas kommen... ?
Weil ich überhaupt keine Funktionsreferenz über die Grid-Methoden im Web finden konnte und zwischendurch immer wieder irgendwelche vagen Hinweise auf XTray gelesen hatte, habe ich mir dieses natürlich installiert. Und der Kracher ist, ich habe damit die echten (generierten) Object-Namen sogar gesehen und über deren Sinn nachgedacht, aber konnte mir überhaupt keinen Reim drauf machen. Alle Wrapper-Klassen, die ich bisher kennengelernt habe, haben natürlich den echten RecordSet-Namen aus der Abfrage oder den der Tabelle verwendet. Auf einen "neuen" generierten Namen wäre ich nie gekommen.
Danke Dir...Problem gelöst. Ich vermute, diese Erfahrung wird mir noch an manch anderer Stelle hilfreich sein.
vg, Maddin
Oh Gott... watt 'ne üble Falle... natürlich habe ich den Titel verwendet, der natürlich gleichlautend mit dem Data Dictionary der Datenbank und auch dem RecordSet war ... wer soll denn bloß auf sowas kommen... ?

Weil ich überhaupt keine Funktionsreferenz über die Grid-Methoden im Web finden konnte und zwischendurch immer wieder irgendwelche vagen Hinweise auf XTray gelesen hatte, habe ich mir dieses natürlich installiert. Und der Kracher ist, ich habe damit die echten (generierten) Object-Namen sogar gesehen und über deren Sinn nachgedacht, aber konnte mir überhaupt keinen Reim drauf machen. Alle Wrapper-Klassen, die ich bisher kennengelernt habe, haben natürlich den echten RecordSet-Namen aus der Abfrage oder den der Tabelle verwendet. Auf einen "neuen" generierten Namen wäre ich nie gekommen.
Danke Dir...Problem gelöst. Ich vermute, diese Erfahrung wird mir noch an manch anderer Stelle hilfreich sein.

vg, Maddin