Datensatz / Daten kopieren (Tabellenansicht)

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

ooport
*
Beiträge: 17
Registriert: Fr, 25.01.2008 16:17

Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von ooport »

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?)
hfr
**
Beiträge: 37
Registriert: Mo, 09.07.2007 14:42
Wohnort: München

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von hfr »

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, …)
hfr
**
Beiträge: 37
Registriert: Mo, 09.07.2007 14:42
Wohnort: München

Makro-Lösung: OO Base Datensatz kopieren - ' duplizieren '

Beitrag von hfr »

............ Und sie dreht sich doch :D .........

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.
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von eBayer »

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
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
robert.vienna
*
Beiträge: 10
Registriert: Fr, 26.03.2010 10:29

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von robert.vienna »

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.
Windows XP Professional SP3, Open Office 3.4.0, JRE 1.6.0_32
ddraht
***
Beiträge: 60
Registriert: Di, 06.04.2010 16:35
Wohnort: Altenberge

Re: Datensatz / Daten kopieren (im Formular)

Beitrag von ddraht »

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
MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von turtle47 »

Hallo Zusammen,

rdraht hat geschrieben:Es muss doch eine einfacher Möglichkeit geben, Zeilen in einer Tabelle zu kopieren.
Natürlich geht das, und wer suchet der findet und das sogar hier im Forum. :D

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
eingetragen werden

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))
ddraht hat geschrieben:Ich habe dein Makro leicht ändern müssen, da ich mac user bin.
Die Pfadangabe benötigt hier / statt \.
Das dürfte jetzt nicht mehr nötig sein dieses zu ändern. :wink:

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
ddraht
***
Beiträge: 60
Registriert: Di, 06.04.2010 16:35
Wohnort: Altenberge

Re: Datensatz / Daten kopieren (Formularansicht)

Beitrag von ddraht »

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 :)
MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von turtle47 »

Hi Dieter,
ddraht hat geschrieben:Nun wird wohl ein neuer Datensatz erzeugt, aber nichts hineinkopiert.
Was mache ich falsch?
Habe ich jetzt nicht genau im Kopf, aber vielleicht hilft dieses
Unser Freund eBayer hat geschrieben:oForm = ThisComponent.DrawPage.Forms.getByName("MainForm") ' Hauptformular
oSubForm = oForm.getByName("SubForm") ' SubForm in Hauptformular
oder jenes weiter.


ddraht hat geschrieben:Am Besten währe natürlich so eine Art ClipBoard, damit man in einer anderen Tabelle einkopieren kann.
Nuja, eigentlich auch keine grosse Sache. Man kann die Felder auslesen und deren Werte in eine Textdatei schreiben.
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
erzeugt und heisst

Code: Alles auswählen

DB_Text.ini
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
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
hfr
**
Beiträge: 37
Registriert: Mo, 09.07.2007 14:42
Wohnort: München

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von hfr »

Danke :D
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.
ddraht
***
Beiträge: 60
Registriert: Di, 06.04.2010 16:35
Wohnort: Altenberge

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von ddraht »

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
MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz / Daten kopieren (Tabellenansicht)

Beitrag von turtle47 »

Hi Dieter,
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.
Zugriff auf die Tabellenfelder des aktuell angewählten Datensatzes bekommst Du wie folgt:

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
	.......
Schönes Wochenende.

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
Antworten