Seite 1 von 3
Ändern von Daten in einem Formular nicht möglich
Verfasst: Mi 23. Jan 2013, 12:53
von smokie
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.
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: Mi 23. Jan 2013, 13:44
von RobertG
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
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: So 27. Jan 2013, 22:08
von MartinS
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
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: So 27. Jan 2013, 23:28
von gogo
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.
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: Mo 28. Jan 2013, 12:05
von MartinS
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
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: Mo 28. Jan 2013, 14:09
von gogo
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!
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: Mo 28. Jan 2013, 18:17
von RobertG
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
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: Mi 30. Jan 2013, 07:12
von MartinS
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
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: Mi 30. Jan 2013, 08:21
von RobertG
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
Re: Ändern von Daten in einem Formular nicht möglich
Verfasst: Mi 30. Jan 2013, 11:07
von gogo
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")
;