Datensatz / Daten kopieren (Tabellenansicht)
Moderator: Moderatoren
Datensatz / Daten kopieren (Tabellenansicht)
Gibt es Tastaturkürzel für folgende Aufgaben? Oder wie sonst erreicht man sie?
1) Einen Datensatz kopieren, sodass das Doppel am Tabellenende als neuer Datensatz eingefügt wird. (Der Autozähler der ID-Spalte sollte sich dabei natürlich für den neuen Datensatz ändern.)
2) Den Inhalt eines Datenfelds (Spalte in der Tabelle) des vorherigen Datensatzes direkt oberhalb des aktuell editierten kopieren, ohne das mühsam per Reinklicken, markieren, kopieren, pasten im Einzelschrittverfahren machen müssen. (MS Access hat da so eine praktische Tastenkombination STRG + SHIFT + ENTER. Gibt es in OO Base eine Entsprechung?)
1) Einen Datensatz kopieren, sodass das Doppel am Tabellenende als neuer Datensatz eingefügt wird. (Der Autozähler der ID-Spalte sollte sich dabei natürlich für den neuen Datensatz ändern.)
2) Den Inhalt eines Datenfelds (Spalte in der Tabelle) des vorherigen Datensatzes direkt oberhalb des aktuell editierten kopieren, ohne das mühsam per Reinklicken, markieren, kopieren, pasten im Einzelschrittverfahren machen müssen. (MS Access hat da so eine praktische Tastenkombination STRG + SHIFT + ENTER. Gibt es in OO Base eine Entsprechung?)
Re: Datensatz / Daten kopieren (Tabellenansicht)
Hallo alle,
auch mir würden Antwort-Ansätze zu der Idee auch sehr helfen, einen ausgewählten OO Base Datensatz zu verdoppeln und [am Ende?] mit neuem Primärschlüssel einzufügen, um bei Mehrfach-Neuanlage ähnlicher Datensätze viel Arbeit zu sparen. (Das ist eine uralte Standardfunktion in MS Access).
Ich erinnere mich dunkel, schon mal irgendwo ein Makro gesehen zu haben, finde es aber im Moment nicht wieder. Optimaler wäre eine mir bisher verborgen gebliebene von OO Base schon vorbereitete Vorgehensweise.
Vielen Dank für Lösungs-Ideen im voraus
PS-1: Andere suchen auch und bisher ebenso hilflos nach einer Lösung, z.B.: http://www.oooforum.org/forum/viewtopic ... uplication
PS-2: Übergangslösung: In phpmyadmin den Datensatz z.B. in eine OO Calc Tabelle exportieren, dort beliebig kopieren und ändern, aus Calc als csv speichern und wieder in Base importieren / am Tabellen-Ende anfügen, was leichter gesagt als getan ist (s. z.B. Datumsformate, Sonderzeichen, …)
auch mir würden Antwort-Ansätze zu der Idee auch sehr helfen, einen ausgewählten OO Base Datensatz zu verdoppeln und [am Ende?] mit neuem Primärschlüssel einzufügen, um bei Mehrfach-Neuanlage ähnlicher Datensätze viel Arbeit zu sparen. (Das ist eine uralte Standardfunktion in MS Access).
Ich erinnere mich dunkel, schon mal irgendwo ein Makro gesehen zu haben, finde es aber im Moment nicht wieder. Optimaler wäre eine mir bisher verborgen gebliebene von OO Base schon vorbereitete Vorgehensweise.
Vielen Dank für Lösungs-Ideen im voraus

PS-1: Andere suchen auch und bisher ebenso hilflos nach einer Lösung, z.B.: http://www.oooforum.org/forum/viewtopic ... uplication
PS-2: Übergangslösung: In phpmyadmin den Datensatz z.B. in eine OO Calc Tabelle exportieren, dort beliebig kopieren und ändern, aus Calc als csv speichern und wieder in Base importieren / am Tabellen-Ende anfügen, was leichter gesagt als getan ist (s. z.B. Datumsformate, Sonderzeichen, …)
Makro-Lösung: OO Base Datensatz kopieren - ' duplizieren '
............ Und sie dreht sich doch
.........
Unter OpenOffice Base 3.1
-------------------------------------
1.) Das auf der Seite
http://user.services.openoffice.org/en/ ... =45&t=1169
zitierte Makro einer Schaltfläche zuordnen.
2.) Im OO-Base-Formular-Navigator die Schaltfläche dem Kontrollelement zuordnen, das vermutlich das oberste sein muss und sich - ggf. auch indirekt - nur auf EINE Tabelle bezieht : bei mir (hfr) i.d.R. das übergeordnete Tabellen-Kontrollelement, das indirekt mit einer *-Abfrage auf die Tabelle-X zugreift.
Im untergeordneten Kontrollelement werden die Detail-Daten auf Basis der Tabelle-X selber dargestellt - und wenn die Schaltfläche hier zugeordnet wird, funktioniert es nicht.

Unter OpenOffice Base 3.1
-------------------------------------
1.) Das auf der Seite
http://user.services.openoffice.org/en/ ... =45&t=1169
zitierte Makro einer Schaltfläche zuordnen.
2.) Im OO-Base-Formular-Navigator die Schaltfläche dem Kontrollelement zuordnen, das vermutlich das oberste sein muss und sich - ggf. auch indirekt - nur auf EINE Tabelle bezieht : bei mir (hfr) i.d.R. das übergeordnete Tabellen-Kontrollelement, das indirekt mit einer *-Abfrage auf die Tabelle-X zugreift.
Im untergeordneten Kontrollelement werden die Detail-Daten auf Basis der Tabelle-X selber dargestellt - und wenn die Schaltfläche hier zugeordnet wird, funktioniert es nicht.
Re: Datensatz / Daten kopieren (Tabellenansicht)
Hallo zusammen,
ich habe diesen Thread schon eine Weile verfolgt und hätte einen Vorschlag zu machen.
Wäre es hilfreich, wenn man eine Möglichkeit finden könnte, die letzte angezeigte Formularmaske zu kopieren?
Ich könnte mir folgendes vorstellen:
1. auf einen Datenzatz gehen, der zum kopieren als Default am besten geeignet ist.
2. mit eiem PushButton "kopieren + neu" anklicken
Der PushButton ruft ein Makro auf, welches eben den aktuellen Inhalt der Formularmaske kopiert, einen neuen Datensatz erstellt und mit den kopierten Daten füllt.
Dabei ist zu berücksichtigen, daß ein möglicher Primarykey nicht überschrieben wird und sicher noch ein paar andere Gemeinheiten.
Falls ich das so richtig verstanden habe, würde ich mich mal intensiver mit der Realisierung als universelles Makro beschäftigen.
Gruß eBayer
ich habe diesen Thread schon eine Weile verfolgt und hätte einen Vorschlag zu machen.
Wäre es hilfreich, wenn man eine Möglichkeit finden könnte, die letzte angezeigte Formularmaske zu kopieren?
Ich könnte mir folgendes vorstellen:
1. auf einen Datenzatz gehen, der zum kopieren als Default am besten geeignet ist.
2. mit eiem PushButton "kopieren + neu" anklicken
Der PushButton ruft ein Makro auf, welches eben den aktuellen Inhalt der Formularmaske kopiert, einen neuen Datensatz erstellt und mit den kopierten Daten füllt.
Dabei ist zu berücksichtigen, daß ein möglicher Primarykey nicht überschrieben wird und sicher noch ein paar andere Gemeinheiten.
Falls ich das so richtig verstanden habe, würde ich mich mal intensiver mit der Realisierung als universelles Makro beschäftigen.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
-
- *
- Beiträge: 10
- Registriert: Fr, 26.03.2010 10:29
Re: Datensatz / Daten kopieren (Tabellenansicht)
Bei mir klappt das so:
1) Zeile in der Tabellenansicht markieren
2) Grünes Dreieck ganz nach unten zum Sternchen ziehen
An dieser Stelle kommt eine Fehlermeldung, da bei mir ID (fortlaufende Nummer) der Primärschlüssel ist und es den nicht doppelt geben darf. Einfach wegklicken und fortlaufende Nummer manuell einfügen.
1) Zeile in der Tabellenansicht markieren
2) Grünes Dreieck ganz nach unten zum Sternchen ziehen
An dieser Stelle kommt eine Fehlermeldung, da bei mir ID (fortlaufende Nummer) der Primärschlüssel ist und es den nicht doppelt geben darf. Einfach wegklicken und fortlaufende Nummer manuell einfügen.
Windows XP Professional SP3, Open Office 3.4.0, JRE 1.6.0_32
Re: Datensatz / Daten kopieren (im Formular)
Ich möcht doch noch mal das Thema erneut anstoßen.
Es muss doch eine einfacher Möglichkeit geben, Zeilen in einer Tabelle zu kopieren.
Sicher, in der Tabellenansicht geht das einigermassen, dass nutzt aber der Formularansicht nichts
.
Ich habe die vorgeschlagenen Makros ausprobiert, bekomme aber nur Fehlermeldungen wie:
Eigenschaft oder Methode nicht gefunden: ResultSetConcurrency
Langsam bekomme ich Pickel, ich werwende OO 3.2 auf dem Mac.
Jetzt mal die Profis ran, was geht und was geht nicht?
Gruß
Dieter
Es muss doch eine einfacher Möglichkeit geben, Zeilen in einer Tabelle zu kopieren.
Sicher, in der Tabellenansicht geht das einigermassen, dass nutzt aber der Formularansicht nichts

Ich habe die vorgeschlagenen Makros ausprobiert, bekomme aber nur Fehlermeldungen wie:
Eigenschaft oder Methode nicht gefunden: ResultSetConcurrency
Langsam bekomme ich Pickel, ich werwende OO 3.2 auf dem Mac.
Jetzt mal die Profis ran, was geht und was geht nicht?
Gruß
Dieter
MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
Oo 3.3.0, Build 9567
Mac os x 10.7.2
Re: Datensatz / Daten kopieren (Tabellenansicht)
Hallo Zusammen,
Ich habe es mal in meine ShowImage-DB eingebaut und getestet. Es funktioniert bis auf Kleinigkeiten einwandfrei.
Am Anfang muss natürlich nocheingetragen werden
und folgende Zeilen habe ich auskommentieren müssen
Viel Erfolg.
Jürgen
Natürlich geht das, und wer suchet der findet und das sogar hier im Forum.rdraht hat geschrieben:Es muss doch eine einfacher Möglichkeit geben, Zeilen in einer Tabelle zu kopieren.

Ich habe es mal in meine ShowImage-DB eingebaut und getestet. Es funktioniert bis auf Kleinigkeiten einwandfrei.
Am Anfang muss natürlich noch
Code: Alles auswählen
oDoc = thisComponent
und folgende Zeilen habe ich auskommentieren müssen
Code: Alles auswählen
'elseif aControl.supportsService("com.sun.star.awt.UnoControlFormattedFieldModel") then
'oDoc.currentController.getControl(aControl).setText(aVal(i))
Das dürfte jetzt nicht mehr nötig sein dieses zu ändern.ddraht hat geschrieben:Ich habe dein Makro leicht ändern müssen, da ich mac user bin.
Die Pfadangabe benötigt hier / statt \.

Viel Erfolg.
Jürgen
- Dateianhänge
-
- ShowImageCopy.zip
- ZIP-Datei bitte entpacken.
- (45.14 KiB) 235-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Datensatz / Daten kopieren (Formularansicht)
Hallo Jürgen,
wer suchet der findet, danke für den Tipp.
Funktioniert super im MainForm. Was muss ich nur tun, um das Makro auf ein SubForm anzuwenden?
Im ersten Ansatz habe ich folgendes geändert:
oForm = ThisComponent.DrawPage.Forms.getByName("MainForm").getByName("SubForm")
Nun wird wohl ein neuer Datensatz erzeugt, aber nichts hineinkopiert.
Was mache ich falsch?
Am Besten währe natürlich so eine Art ClipBoard, damit man in einer anderen Tabelle einkopieren kann.
Du merkst, die Begehrlichkeiten steigen
Gruß
Dieter
PS: das Bilder_verlink_Makro sieht gut aus
wer suchet der findet, danke für den Tipp.
Funktioniert super im MainForm. Was muss ich nur tun, um das Makro auf ein SubForm anzuwenden?
Im ersten Ansatz habe ich folgendes geändert:
oForm = ThisComponent.DrawPage.Forms.getByName("MainForm").getByName("SubForm")
Nun wird wohl ein neuer Datensatz erzeugt, aber nichts hineinkopiert.
Was mache ich falsch?
Am Besten währe natürlich so eine Art ClipBoard, damit man in einer anderen Tabelle einkopieren kann.
Du merkst, die Begehrlichkeiten steigen

Gruß
Dieter
PS: das Bilder_verlink_Makro sieht gut aus

MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
Oo 3.3.0, Build 9567
Mac os x 10.7.2
Re: Datensatz / Daten kopieren (Tabellenansicht)
Hi Dieter,
Anschliessen liest man diese wieder aus und schreibt sie zurück in z.B. einen neuen Datensatz oder überschreibt einen bestehenden.
Wenn man einen bestehenden Datensatz überschreiben will wird vorher abgefragt ob das auch wirklich gewollt ist.
Das schöne an der Sache ist, dass man hintereinander neue Datensätze erzeugen kann, ohne immer erst den Quelldatensatz auszuwählen wie in der Vorgängerversion.
Die Werte bleiben ja so lange erhalten bis sie überschrieben werden. Sie stehen sogar nach schliessen und öffnen der DB wieder zur Verfügung.
Die Textdatei wird automatisch bei mir unter:
erzeugt und heisst
Bei Dir auf dem Mac müsstest Du mal schauen wo diese abgelegt wird (Das muss man aber nicht unbedingt wissen).
Beigefügt mal eine Beispieldatei.
Viel Spass.
Jürgen
Habe ich jetzt nicht genau im Kopf, aber vielleicht hilft diesesddraht hat geschrieben:Nun wird wohl ein neuer Datensatz erzeugt, aber nichts hineinkopiert.
Was mache ich falsch?
oder jenes weiter.Unser Freund eBayer hat geschrieben:oForm = ThisComponent.DrawPage.Forms.getByName("MainForm") ' Hauptformular
oSubForm = oForm.getByName("SubForm") ' SubForm in Hauptformular
Nuja, eigentlich auch keine grosse Sache. Man kann die Felder auslesen und deren Werte in eine Textdatei schreiben.ddraht hat geschrieben:Am Besten währe natürlich so eine Art ClipBoard, damit man in einer anderen Tabelle einkopieren kann.
Anschliessen liest man diese wieder aus und schreibt sie zurück in z.B. einen neuen Datensatz oder überschreibt einen bestehenden.
Wenn man einen bestehenden Datensatz überschreiben will wird vorher abgefragt ob das auch wirklich gewollt ist.
Das schöne an der Sache ist, dass man hintereinander neue Datensätze erzeugen kann, ohne immer erst den Quelldatensatz auszuwählen wie in der Vorgängerversion.
Die Werte bleiben ja so lange erhalten bis sie überschrieben werden. Sie stehen sogar nach schliessen und öffnen der DB wieder zur Verfügung.
Die Textdatei wird automatisch bei mir unter:
Code: Alles auswählen
C:\Users\Dozent\AppData\Roaming\OpenOffice.org\3\user\DB_CopyText
Code: Alles auswählen
DB_Text.ini
Beigefügt mal eine Beispieldatei.
Viel Spass.
Jürgen
- Dateianhänge
-
- Kopieren_Einfügen.odb
- (13.38 KiB) 267-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Datensatz / Daten kopieren (Tabellenansicht)
Danke
Bisher verwende ich am Rand von tabellenartigen Formularen eine Schaltfläche mit einem Makro, das ich in Foren gefunden hatte, das (meistens) dabei funktioniert, ein Duplikat der aktuellen Zeile am Ende einzufügen.
Werde versuchen, Deine Idee in meine Formulare einzubauen.

Bisher verwende ich am Rand von tabellenartigen Formularen eine Schaltfläche mit einem Makro, das ich in Foren gefunden hatte, das (meistens) dabei funktioniert, ein Duplikat der aktuellen Zeile am Ende einzufügen.
Werde versuchen, Deine Idee in meine Formulare einzubauen.
Re: Datensatz / Daten kopieren (Tabellenansicht)
Hallo Jürgen,
so einfach war es nicht gerade für mich, aber nachdem ich die Programmstruktur einigermaßen verstanden habe, konnte ich es für mich anpassen.
Die Schwirigkeit, für mich dem Anfänger,lag im Subformular.
Nachdem ich dann oform und den Speicherpfad richtig diffiniert hatte, musste ich nur noch alle Felder bzw. Variablen eintragen.
Leider wusste ich nicht wie man Tabellenfelder anspricht, daher habe ich in meinem Formular zusätzlich Textfelder eingebaut die ich dann ausgeblendet habe. Geht auch
.
Schade, das es wohl kein Objekt für eine Tabellenzeile gibt.
Naja, dank deiner und eurer Hilfe, lauft das copy and past nun aber super gut.
Ein bischen basteln ist wohl immer nötig.
Dieter
so einfach war es nicht gerade für mich, aber nachdem ich die Programmstruktur einigermaßen verstanden habe, konnte ich es für mich anpassen.
Die Schwirigkeit, für mich dem Anfänger,lag im Subformular.
Nachdem ich dann oform und den Speicherpfad richtig diffiniert hatte, musste ich nur noch alle Felder bzw. Variablen eintragen.
Leider wusste ich nicht wie man Tabellenfelder anspricht, daher habe ich in meinem Formular zusätzlich Textfelder eingebaut die ich dann ausgeblendet habe. Geht auch

Schade, das es wohl kein Objekt für eine Tabellenzeile gibt.
Naja, dank deiner und eurer Hilfe, lauft das copy and past nun aber super gut.
Ein bischen basteln ist wohl immer nötig.
Dieter
MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
Oo 3.3.0, Build 9567
Mac os x 10.7.2
Re: Datensatz / Daten kopieren (Tabellenansicht)
Hi Dieter,
Schönes Wochenende.
Jürgen
Zugriff auf die Tabellenfelder des aktuell angewählten Datensatzes bekommst Du wie folgt:ddraht hat geschrieben:Leider wusste ich nicht wie man Tabellenfelder anspricht, daher habe ich in meinem Formular zusätzlich Textfelder eingebaut die ich dann ausgeblendet habe. Geht auch.
Schade, das es wohl kein Objekt für eine Tabellenzeile gibt.
Code: Alles auswählen
oDoc = thisComponent
oForm = oDoc.drawpage.forms.getbyindex(0)
oCtrl1 = oForm.getByName("MainForm_Grid")'Name anpassen
String1 = oForm.getString(1)'Variable füllen aus Spalte 1
String2 = oForm.getString(2)'Variable füllen aus Spalte 2
String3 = oForm.getString(3)'Variable füllen aus Spalte 3
.......
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem