🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Ändern von Daten in einem Formular nicht möglich

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
smokie
Beiträge: 10
Registriert: Mi 23. Jan 2013, 12:27

Ändern von Daten in einem Formular nicht möglich

Beitrag von smokie » Mi 23. Jan 2013, 12:53

Moin zusammen,

wer kann mir hier helfen...

Ich habe in einer Datenbank (ODBC auf MS SQL DB) aus einer vorhandenen Abfrage ein Formular über den Assistenten entwickelt, um darin nun entsprechende Daten zu ändern.

Die Daten werden im Formular alle angezeigt, allerdings ist eine Änderung der vorhandenen Daten nicht möglich.

Bei der Erstellung des Formulares habe ich ausgewählt, dass das Formular existierende Daten anzeigen soll und die Optionen für das "nicht ändern / hinzufügen" der Daten nicht ausgewählt.

Freue mich über jede Antwort. Vielen Dank im Voraus.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von RobertG » Mi 23. Jan 2013, 13:44

Hallo smokie,

Du kannst grundsätzlich im Formular nur dann Daten ändern, wenn das bereits in der zugrundeliegenden Abfrage bzw. Tabelle möglich ist. Standardeinstellung bei Base ist da, dass die Primärschlüssel der betroffenen Tabellen in der Abfrage vorkommen müssen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von MartinS » So 27. Jan 2013, 22:08

RobertG hat geschrieben: Du kannst grundsätzlich im Formular nur dann Daten ändern, wenn das bereits in der zugrundeliegenden Abfrage bzw. Tabelle möglich ist. Standardeinstellung bei Base ist da, dass die Primärschlüssel der betroffenen Tabellen in der Abfrage vorkommen müssen.
Hiho, Ich häng mich hier mal dran:

Ich hab eine Datenbank von der internen Datenbank in Base auf mySQL gewechselt - Frontend soll erstmal base bleiben und alle Formulare und so weiter funktionieren mittlerweile auch unter mysql...
Leider geht die dateneingabe bei einem Formular nicht mehr. (ist das einzigste das auf einer Abfrage basiert, alle primärschlüssel sind drin, ging mit der internen Datenbank).
Gibts da ne Möglichkeit, das das auch mit mysql funzt?

mfG

MartinS

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von gogo » So 27. Jan 2013, 23:28

es gilt das Selbe wie für smokie:
Abfrage öffnen und nachsehen ob Du da Daten ändern kannst. - Sollte das nicht möglich sein, musst Du die Abfrage umstricken.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von MartinS » Mo 28. Jan 2013, 12:05

Schon klar, das das Formular nicht funzt wenn schon bei der Abfrage keine Eingabe möglich ist.

Dateneingabebei Abfrage funzte aber mit der integrierten HSQLDB, jetzt nach der umstellung auf mySQL leider nicht mehr :( Jetzt die frage, liegt das an MySQL und da muss das anderster gemacht werden odre liegt das an base und ich muss den fehler dort suchen..

mfG

MartinS

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von gogo » Mo 28. Jan 2013, 14:09

Syntax MySQL <> Syntax HSQL-DB! Daher: eine Abfrage die in der internen HSQL-DB eine Eingabe erlaubt tut dies evtl. nicht wenn das Backend MySQL heisst! Das hat mit dem Treiber zu tun mit dem Du die MySQL ansteuerst - wenn der eine gewisse Syntax nicht zwischen Base und MySQL vermitteln kann, dann ...
Falls Dir der Button "SQL-direkt ausführen" schon mal untergekommen ist: der tut genau das - eine per (LO-Base-Code & Treiber-Code) nicht vermittelbare SQL-Anweisung wird im "Klartext" an die MySQL geschickt, das Ergebnis ist dann ein Resultset (oder ein Error ;) ) aber NIE editierbar!
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von RobertG » Mo 28. Jan 2013, 18:17

Ich habe das gerade einmal mit MySQL und dem direkten Treiber probiert. Da scheint es eher ein Grundproblem im Treiber zu geben. Scheint mir ganz so, als wären externe Datenbanken in der beschriebenen Weise nicht bearbeitbar. Da muss dann die Abfrage entsprechend anders konstruiert werden.
Ich mache das einmal an einem Beispiel deutlich:

Code: Alles auswählen

SELECT "Person"."ID", "Person"."Name", "Person"."Klasse_ID", "Klasse"."ID", "Klasse"."Klasse" FROM "test"."Person" AS "Person", "test"."Klasse" AS "Klasse" WHERE "Person"."Klasse_ID" = "Klasse"."ID"
Funktioniert nicht. Es sind beide Primärschlüssel drin. Anscheinend wird ausgewertet, ob m,ehr als eine Tabelle abgefragt wird (FROM ...)

Code: Alles auswählen

SELECT "Person"."ID", "Person"."Name" AS "PersonID", "Person"."Klasse_ID", (SELECT "Klasse"."Klasse" FROM "test"."Klasse" AS "Klasse" WHERE "Klasse"."ID" = "Person"."Klasse_ID") AS "Klasse"  FROM "test"."Person" AS "Person"
Funktioniert. Die Korrelierende Unterabfrage wird nicht als Ausschlusskriterium interpretiert. Vom Prinzip her leistet sie genau das Gleiche. Allerdings muss beherzigt werden, dass der Inhalt aus der Tabelle "Klasse" bekannt ist - hier können keine Neueingaben gemacht werden. Die Eingabe eines Wertes für die "Klasse_ID" funktioniert aber, wenn eben die Klasse vorhanden ist.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von MartinS » Mi 30. Jan 2013, 07:12

hiho robert,

ok, ich versuch das mal entsprechend nachzuvollziehen und umzustricken ...

testdatenbank test.odb mit der internen Datenbank:

2 Tabellen "Person" und "Klasse" mit den entsprechenden Feldern.

Dein erster code (alles mit "test" rausgelöscht) funzt.

Code: Alles auswählen

    SELECT "Person"."ID", "Person"."Name", "Person"."Klasse_ID", "Klasse"."ID", "Klasse"."Klasse" FROM "Person" AS "Person", "Klasse" AS "Klasse" WHERE "Person"."Klasse_ID" = "Klasse"."ID"
und liefert als Abfrage richtiges ergebniss...

Dein 2ter code

Code: Alles auswählen

SELECT "Person"."ID", "Person"."Name" AS "PersonID", "Person"."Klasse_ID", (SELECT "Klasse"."Klasse" FROM "Klasse" AS "Klasse" WHERE "Klasse"."ID" = "Person"."Klasse_ID") AS "Klasse"  FROM "Person" AS "Person"
funzt so, wenn ich ihn direkt als SQL-befehl eintippe (Meldung: 1: Befehl erfolgreich ausgeführt.)

Als Abfrage lässt er aber Base direkt abstürzen (Version 3.6.0.2 (Build ID: 360m1(Build:102)) unter Kubuntu) :(

Muss ich wohl noch ein bisserl nachschauen was da passiert..

MartinS

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von RobertG » Mi 30. Jan 2013, 08:21

Hallo Martin,

ich habe das hier lediglich mit LO 3.3.4 und dem direkten Treiber getestet, also weder JDBC noch ODBC. Mein System: OpenSuSE 11.4. Das Ganze lief dann nicht im direkten SQL-Modus sondern so als Abfrage durch, in die ich eben auch Eingaben machen konnte.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Ändern von Daten in einem Formular nicht möglich

Beitrag von gogo » Mi 30. Jan 2013, 11:07

MartinS hat geschrieben: Als Abfrage lässt er aber Base direkt abstürzen (Version 3.6.0.2 (Build ID: 360m1(Build:102)) unter Kubuntu) :(
Muss ich wohl noch ein bisserl nachschauen was da passiert..
Ich habe weder ODBC noch "MS SQL DB", aber wenn Du das Kommando direkt ausführst, dann solltest Du keinen Absturz bekommen, sondern einen Error - aus dem ist auch das Statement ersichtlich welches den Error produziert hat. Dieses kann stark von dem was Du im Editor erfasst hast abweichen.

Base versucht immer die Abfrage aufzulösen, allerdings gibt's das eine oder andere Problem beim auflösen der Alias. Versuche mal deine mehrfachen Alias zu verändern:

Code: Alles auswählen

SELECT
  "P"."ID",
  "P"."Name" AS "PersonID",
  "P"."Klasse_ID",
  (SELECT "K"."Klasse" FROM "Klasse" AS "K" WHERE "K"."ID" = "P"."Klasse_ID") AS "Klasse_SubStr"  
FROM
  "Person" AS "P";
oder

Code: Alles auswählen

SELECT
  "P"."ID" as "P_ID",
  "P"."Name" AS "P_Name",
  "P"."Klasse_ID" as "P_Klasse",
  (SELECT "K"."Klasse" as "K_Klasse" FROM "Klasse" AS "K" WHERE "K"."ID" = "P"."Klasse_ID") AS "Klasse_SubStr"  
# (SELECT "K"."Klasse" as "K_Klasse" FROM "Klasse" AS "K" WHERE "K"."ID" = "P"."P_Klasse") AS "Klasse_SubStr"  <= OPTIONAL
FROM
  "Person" AS "P";
in MySQL wuerde ich die Tabellen joinen:

Code: Alles auswählen

SELECT
  "P"."ID",
  "P"."Name" AS "PersonID",
  "P"."Klasse_ID",
  "Klasse_SubTab"."K_Klasse"
FROM
     "Person" AS "P"
  JOIN <===== oder LEFT JOIN, LEFT OUTER JOIN, RIGHT JOIN bzw. RIGHT OUTER JOIN
     (SELECT "K"."ID","K"."Klasse" as "K_Klasse" FROM "Klasse" AS "K") AS "Klasse_SubTab"
  ON
     ("P"."Klasse_ID"="Klasse_SubTab"."ID")
;
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten