Re: [de-users] Base - Makro - Formular - Tabellenkontrollfeld
Hallo Frieder, Robert, ich habe das Makro zum Laufen gebracht. Knackpunkt war die Reihenfolge der Makro-Sequenzen. sub Probe dim oTable1, ofild, oControll oTable1 = thisComponent.drawpage.forms(0).getByName(MainForm_Nachname) If oTable1.getRowSet.RowCount =0 Then Exit Sub 'Die folgende Reihenfolge der Zeilen muss unbedingt einghalten werden oTable1.getRowSet.Last oControll = thiscomponent.CurrentController.getControl(oTable1) oControll.SetCurrentColumnPosition(1) thiscomponent.CurrentController.getControl(oTable1).setFocus sNameID = oTable1.getByIndex(1).Text oTable1.getRowSet.moveToInsertRow ' Ende der Reihenfolge, die unbedingt eingehalten werden muss ofild=oTable1.getByIndex(1) ofild.Text= sNameID ofild.commit oControll.SetCurrentColumnPosition(4) end sub Vielen Dank für Eure Hilfe. Gruß Jochen -- Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Base - Makro - Formular - Tabellenkontrollfeld
Hallo Jochen Am 17.01.2012 23:15, schrieb Jochen: Hallo Frieder Am 16.01.2012 13:40, schrieb Frieder: oform.getRowSet.moveToInsertRow(false) 'Fokus setzen, damit mann direckt hineinschreiben kann. thiscomponent.CurrentController.getControl(oform).setFocus end sub Vielen Dank für Deinen Code-Vorschlag. Dieser hat mir schon weitergeholfen. Allerdings habe ich jetzt noch das Problem, dass ich in das Feld, in dem der Fokus gesetzt worden ist, per Makro kein Inhalt (z.B. einen Text) schreiben kann. Gibt es dafür eine Lösung? Ich habe grundsätzlich eine Methode gefunden, mit der das geht. Allerdings scheint sie nicht 100%ig zu funktionieren. Ich weiß nicht , ob das ein Bug ist, oder ob ich etwas falsch mache. Aber hier die Methode: 'Das Tabellenkontrollfeld ansprechen oform=thiscomponent.drawpage.forms(0).getByName(MainForm_Grid) oform.getRowSet.moveToInsertRow 'in die neue Zeile gehen field=oform.getByIndex(1) '2. Spalte auswählen field.Text= 'Text setzen field.commit 'Text in die Datenbank übernehmen. oControll= thiscomponent.CurrentController.getControl(oform) oControll.SetCurrentColumnPosition(2) ' Cursor in die 2. Spalte setzen oControll.setFocus' Fokus setzen Gruß Frieder -- Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Base - Makro - Formular - Tabellenkontrollfeld
Hallo Frieder, Ich habe grundsätzlich eine Methode gefunden, mit der das geht. Allerdings scheint sie nicht 100%ig zu funktionieren. Ich weiß nicht , ob das ein Bug ist, oder ob ich etwas falsch mache. Aber hier die Methode: 'Das Tabellenkontrollfeld ansprechen oform=thiscomponent.drawpage.forms(0).getByName(MainForm_Grid) oform.getRowSet.moveToInsertRow 'in die neue Zeile gehen field=oform.getByIndex(1) '2. Spalte auswählen vielleicht field.updateString(rrr) oform.updateRow() (geht natürlich nicht in einer neuen Zeile, hier dann oform.insertRow() field.Text= 'Text setzen field.commit 'Text in die Datenbank übernehmen. oControll= thiscomponent.CurrentController.getControl(oform) oControll.SetCurrentColumnPosition(2) ' Cursor in die 2. Spalte setzen oControll.setFocus' Fokus setzen Gruß Frieder Gruß Robert -- Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Base - Makro - Formular - Tabellenkontrollfeld
Hallo Frieder Am 16.01.2012 13:40, schrieb Frieder: oform.getRowSet.moveToInsertRow(false) 'Fokus setzen, damit mann direckt hineinschreiben kann. thiscomponent.CurrentController.getControl(oform).setFocus end sub Vielen Dank für Deinen Code-Vorschlag. Dieser hat mir schon weitergeholfen. Allerdings habe ich jetzt noch das Problem, dass ich in das Feld, in dem der Fokus gesetzt worden ist, per Makro kein Inhalt (z.B. einen Text) schreiben kann. Gibt es dafür eine Lösung? Gruß Jochen -- Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Base - Makro - Formular - Tabellenkontrollfeld
Hallo Jochen Am 15.01.2012 16:17, schrieb Jochen: Hallo *, ich möchte für Base ein Makro erstellen, das in einem Tabellenkontrollfeld in einem Formular u.a. folgenden zwei Aufgaben durchführen soll: 1) Nummer des letzten Datensatzes einer Tabelle auslesen. 2) Befehl Neuer Datensatz ausführen. ich bin mir zwar nicht ganz sicher was du genau willst, aber vielleicht hilft dir ja das hier: (muss direckt aus dem Formular ausgeführt werden) Sub Formular_Manipolation Dim oform As Object Dim aData(1) As variant Dim nAnzahl As Long ,i% ' Nummer des Formulars(0) und Name des Tabellenkontrollfeldes (MainForm_Grid) bitte anpassen !! oform=thiscomponent.drawpage.forms(0).getByName(MainForm_Grid) 'anzahl der einträge nAnzahl = oform.getRowSet.RowCount MsgBox Das Formular hat nAnzahl Datensätze. 'gehe zu letzten Reihe mit einträgen oform.getRowSet.Last 'hole den inhalt des letzten eintrags in ein Array(nur Datum und Text) Redim aData( oform.Count -1) for i=0 to oform.Count -1 If oform.getByIndex(i).DataFieldProperty = Date Then aData(i) = oform.getByIndex(i).Date else aData(i)= oform.getByIndex(i).Text end if MsgBox Letzter Datensatz Spalte i+1 Lautet: Chr(10) aData(i) next 'Neuer eintrag(gehe zu letzten Reihe) oform.getRowSet.moveToInsertRow(false) end sub Gruß Frieder -- Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Re: [de-users] Base - Makro - Formular - Tabellenkontrollfeld
Hallo Jochen Am 15.01.2012 16:17, schrieb Jochen: ich möchte für Base ein Makro erstellen, das in einem Tabellenkontrollfeld in einem Formular u.a. folgenden zwei Aufgaben durchführen soll: 1) Nummer des letzten Datensatzes einer Tabelle auslesen. 2) Befehl Neuer Datensatz ausführen. Habe das Makro noch erweitert, damit der Fokus danach auch auf dem Tabellenkontrollfeld ist, und du somit direkt hineinschreiben kannst. Hier der Code: (muss direkt aus dem Formular ausgeführt werden) Sub Formular_Manipolation Dim oform As Object Dim aData(1) As variant Dim nAnzahl As Long ,i% ' Nummer des Formulars(0) und Name des Tabellenkontrollfeldes (MainForm_Grid) bitte anpassen !! oform=thiscomponent.drawpage.forms(0).getByName(MainForm_Grid) 'anzahl der einträge nAnzahl = oform.getRowSet.RowCount MsgBox Das Formular hat nAnzahl Datensätze. 'gehe zu letzten Reihe mit einträgen oform.getRowSet.Last 'hole den inhalt des letzten eintrags in ein Array(nur Datum und Text) Redim aData( oform.Count -1) for i=0 to oform.Count -1 If oform.getByIndex(i).DataFieldProperty = Date Then aData(i) = oform.getByIndex(i).Date else aData(i)= oform.getByIndex(i).Text end if MsgBox Letzter Datensatz Spalte i+1 Lautet: Chr(10) aData(i) next 'Neuer Eintrag(gehe zu letzten Reihe) oform.getRowSet.moveToInsertRow(false) 'Fokus setzen, damit mann direckt hineinschreiben kann. thiscomponent.CurrentController.getControl(oform).setFocus end sub Gruß Frieder -- Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
[de-users] Base - Makro - Formular - Tabellenkontrollfeld
Hallo *, ich möchte für Base ein Makro erstellen, das in einem Tabellenkontrollfeld in einem Formular u.a. folgenden zwei Aufgaben durchführen soll: 1) Nummer des letzten Datensatzes einer Tabelle auslesen. 2) Befehl Neuer Datensatz ausführen. Ich finde nicht die dazu nötigen Befehle bzw. Methoden. Kann jemand diese hier posten? LO: LibreOffice 3.4.4 OOO340m1 (Build:402) OS: Windows 7 Prof 64 Bit Gruß Jochen -- Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert