🙏 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.
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 » Do 31. Jan 2013, 20:16

Hallo Gogo, hallo Martin,

an irgendeinem fehlerhaften Code liegt das eindeutig nicht. Vielleicht eher an den Versionen, mit denen Martin das versucht: Ich lese, dass die Version 3.6.0.2 genutzt wird. Da wir leider bei jeder neuen Version mit neuen Bugs zu kämpfen haben, würde ich aus der 3.6-er-Reihe die aktuellste Version nehmen: Version 3.6.5.2 (Build ID: 5b93205) - ein Releasecandidate, oder die Vorgängerversion 3.6.4.

Bei mir läuft die Abfrage in dieser Version auch anstandslos. Und das unabhängig, ob ich eine ODBC, eine JDBC oder eine direkte Verbindung nutze.
Manchmal sogt LO auch für eine andere Schreibweise; " " Anführungsstriche werden durch ` ` ersetzt:

Code: Alles auswählen

SELECT `Ort`.`ID`, `Ort`.`Ort`, `Ort`.`LandID`, (SELECT `Land` FROM `Land` WHERE `ID` = `Ort`.`LandID`) AS `Land` FROM `test`.`Ort` AS `Ort`
Hat bei mir den gleichen Erfolg: Eine Tabelle heißt "Ort" - sämtliche Felder sind aufgelistet. Eine zweite Tabelle heißt "Land" nur mit einer ID und dem Feld Land. Die korrelierende Unterabfrage ergibt genau einen Wert. Getestet mit dem ODBC-Treiber und LO 3.6.5.2.
Die oben genutzten Tabellen haben im Gegensatz zu denen der vorherigen Abfrage den alten Standardtyp "MyISAM" (verwaltet keine Relationen). Die Tabellen "Klasse" und "Person" in dem vorhergehenden Beispiel waren InnoDB-Tabellen, die auch Relationen selbständig regeln.

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

smokie
Beiträge: 10
Registriert: Mi 23. Jan 2013, 12:27

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

Beitrag von smokie » Do 31. Jan 2013, 22:08

Hallo Robert

ich komme jetzt erst dazu, mich weiter mit dem Thema zu beschäftigen.
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.
Was meinst Du mit der Ansage, dass bereits in der zugrundeliegenden Abfrage eine Änderung von Daten möglich sein muss.

Kann man das einstellen? Ich bin in der Beziehung sehr "anfänglich" unterwegs.

Ansonsten habe ich versucht, das Beispiel mit der Klasse auf einem SQL Server nach zu bauen. Die Abfrage passt auch, nur ist auch hier eine Änderung / Ergänzung mittels Formular nicht möglich.

Gruß smokie

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

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

Beitrag von MartinS » Do 31. Jan 2013, 22:16

jepp, lag an der Version...update auf Version 3.6.5.2 (Build ID: 360m1(Build:2)) jetzt stürzt nix mehr ab und beide Abfragen funsionieren soweit.

Jetzt muss ich mich erstmal intensiever mit SQL beschäftigen um das auf meine Abfrage umzusetzen (Da gehts um mindestens 3 Tabellen die verknüpft sind)....
...und einiges anderes liegt auch noch im argen seit der umstelllung auf MYSQL (außer der speed, das ist um den Faktor mindestens hundert schneller *G)

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 » Fr 1. Feb 2013, 13:05

Hallo smokie,
smokie hat geschrieben:Hallo Robert

ich komme jetzt erst dazu, mich weiter mit dem Thema zu beschäftigen.
Dieser Thread ist ja mittlerweile sehr zerfasert. Als Ausgangspunkt bei Deinem Problem war ja nicht eine MySQL-Datenbank sonder eine MS SQL-Datenbank vorgesehen.
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.
smokie hat geschrieben:Was meinst Du mit der Ansage, dass bereits in der zugrundeliegenden Abfrage eine Änderung von Daten möglich sein muss.
Dein Formular hat ja als Grundlage entweder eine Tabelle oder eine Abfrage. Zuerst musst Du testen, ob die Tabelle bzw. die Abfrage beschreibbar ist. Solange das nicht der Fall ist kannst Du in dem Formular lustig einstellen, dass Änderungen möglich sein sollen - es passiert trotz allem nichts. Du kannst also mit dem Formular wohl eine Eingabe beschränken, aber eben nicht erweitern.
Nutzerfreundlicher wäre in dem Moment schon, wenn im Formular all die Felder, die in diesem Fall gar nichts mehr bewirken können, einfach inaktiv erscheinen würden.
Dein Formular hat als Grundlage eine Tabelle: Können Daten hier eingegeben werden? Dies ist manchmal nicht möglich. Das liegt dann an fehlenden Primärschlüsseln oder daran, dass es sich z.B. um eine Tabelle einer Tabellenkalkulation oder um ein Adressbuch aus einem E-Mail-Programm handelt.
Dein Formular hat als Grundlage eine Abfrage, die Du vorher mit Base erstellt hast: Können Daten eingegeben werden? Zwei Gründe, warum dies eventuell nicht geht: Der Primärschlüssel der Tabelle, die abgefragt wird, fehlt, oder es wird mehr als eine Tabelle abgefragt. Der zweite Grund ist auf externen Datenbanken begrenzt. Mit der internen HSQLDB können auch mehrere Tabellen abgefragt werden, solange einfach nur von all diesen Tabellen auch der Primärschlüssel vorhanden ist.
smokie hat geschrieben: Ansonsten habe ich versucht, das Beispiel mit der Klasse auf einem SQL Server nach zu bauen. Die Abfrage passt auch, nur ist auch hier eine Änderung / Ergänzung mittels Formular nicht möglich.
Es ist Dir nicht möglich, in die Abfrage direkt etwas einzugeben? Zuerst die Abfrage testen, dann können Formulare konstruiert werden.
Ist Dir möglich, prinzipiell etwas in Tabellen einzugeben? Nicht dass überhaupt die gesamte Datenbank nur zum Lesen geöffnet 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

smokie
Beiträge: 10
Registriert: Mi 23. Jan 2013, 12:27

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

Beitrag von smokie » Sa 2. Feb 2013, 12:40

Hallo Robert,
RobertG hat geschrieben: Es ist Dir nicht möglich, in die Abfrage direkt etwas einzugeben? Zuerst die Abfrage testen, dann können Formulare konstruiert werden.
Ist Dir möglich, prinzipiell etwas in Tabellen einzugeben? Nicht dass überhaupt die gesamte Datenbank nur zum Lesen geöffnet ist ...
Also, bei dem Beispiel mit der Klasse habe ich es nun hinbekommen, dass ich Daten durch ein Formular ändern oder ergänzen kann.

In meiner großen Datenbank kann ich in einzelen Tabellen über Formuale oder in den Abfragen Daten ändern und auch ergänzen. Allerdings funktioniert es nicht bei einer Abfrage über mehrere Tabellen. Bei der Abfrage, welche ich in ein Formular bringen will und dort Daten ändern möchte sind insgesamt 5 Tabellen beteiligt.
Tabellen.JPG
Tabellen.JPG (47.73 KiB) 6687 mal betrachtet
Ich vermute, dass es daran liegt. Mal sehen, ob ich das irgendwie aufdröseln kann.

Meine jetzige Abfrage ist so formuliert...

Code: Alles auswählen

SELECT 
	"baabLeitung"."ablBezeichnung", 
	"baabLeiInspektion"."abliStrassenname", 
	"baabLeiInspektion"."abliNameVideomedium",
	"baabLeiInspektion"."abliKlasseBautechnikAuto", 
	"baabLeiInspektion"."abliKlasseBauUmwAuto", 
	"baabLeiInspektionstext"."ablitInspektionstext", 
	"baabLeiInspektionstext"."ablitCharakterisierung1",
	"baabLeiInspektionstext"."ablitCharakterisierung2",
	"baabLeiInspektionstext"."ablitStation",
	"baabLeiInspektionstext"."ablitSKDvAuto",
	"baabLeiInspektionstext"."ablitSKSvAuto",
	"baabLeiInspektionstext"."ablitSKBvAuto",
	"baalProjekt"."alprBezeichnung",
	"baabLeiInspektionstext"."ablitId",	
	"baabLeiInspektion"."abliId",
	"baabLeitung"."ablId",
	"baalGemeinde"."algeId",
	"baalProjekt"."alprId"
FROM
	"baalGemeinde" AS "baalGemeinde",
	"baalProjekt" AS "baalProjekt",
	"baabLeitung" AS "baabLeitung",
	"baabLeiInspektion" AS "baabLeiInspektion",
	"baabLeiInspektionstext" AS "baabLeiInspektionstext"
WHERE
	"baalGemeinde"."alprId" = "baalProjekt"."alprId"
	AND "baabLeitung"."algeId" = "baalGemeinde"."algeId"	
	AND "baabLeiInspektion"."ablId" = "baabLeitung"."ablId"
	AND "baabLeiInspektionstext"."abliId" = "baabLeiInspektion"."abliId"
	AND "baalProjekt"."alprBezeichnung" = 'KS_ABS01'
	AND ( "baabLeiInspektionstext"."ablitSKBvAuto" = 6 OR "baabLeiInspektionstext"."ablitSKDvAuto" = 6 OR "baabLeiInspektionstext"."ablitSKSvAuto" = 6 )
Gruß Wolfgang

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 » Sa 2. Feb 2013, 18:18

Hallo Wolfgang,

prüfe einmal, ob die folgende Abfrage bei Dir editierbar ist:

Code: Alles auswählen

SELECT
"A"."ablitInspektionstext",
"A"."ablitCharakterisierung1",
"A"."ablitCharakterisierung2",
"A"."ablitStation",
"A"."ablitSKDvAuto",
"A"."ablitSKSvAuto",
"A"."ablitSKBvAuto",
"A"."ablitId",  
(SELECT "abliStrassenname FROM "baabLeiInspektion" WHERE "A"."abliId" = "abliId") AS "Strassenname"
FROM
"baabLeiInspektionsText" AS "A"
WHERE "A"."ablitSKBvAuto" = 6 OR "A"."ablitSKDvAuto" = 6 OR "A"."ablitSKSvAuto" = 6
Ich hoffe, dass die Bezeichnungen noch stimmen. Einige Bezeichner sind sich bei den Tabellen doch recht ähnlich.
In der FROM-Anweisung steht nur eine Tabelle. Nur dann klappt es mit der Editierbarkeit z.B. bei der externen MySQL-Datenbank. Ähnlich wie die Spalte "Strassenname" kannst Du aus der Tabelle "baabLeiInspektion" alle weiteren gewünschten Felder einbinden. Schließlich müsste so auch eine Einbindung von Feldern aus "baabLeitung" über "ablId" möglich sein.
Editieren kannst Du letztlich wohl nur die Felder aus "baabLeiInspektionstext".

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

smokie
Beiträge: 10
Registriert: Mi 23. Jan 2013, 12:27

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

Beitrag von smokie » Sa 2. Feb 2013, 22:00

Hallo Robert,

ja, vielen Dank, das funktioniert.
RobertG hat geschrieben:Editieren kannst Du letztlich wohl nur die Felder aus "baabLeiInspektionstext".
Das nur die eine Tabelle editierbar ist, ist ok - damit kann ich leben.
RobertG hat geschrieben:Ähnlich wie die Spalte "Strassenname" kannst Du aus der Tabelle "baabLeiInspektion" alle weiteren gewünschten Felder einbinden. Schließlich müsste so auch eine Einbindung von Feldern aus "baabLeitung" über "ablId" möglich sein.
Das hat leider nicht funktioniert:

Code: Alles auswählen

SELECT
"A"."ablitInspektionstext",
"A"."ablitCharakterisierung1",
"A"."ablitCharakterisierung2",
"A"."ablitStation",
"A"."ablitSKDvAuto",
"A"."ablitSKSvAuto",
"A"."ablitSKBvAuto",
"A"."ablitId", 
(SELECT "abliStrassenname" FROM "baabLeiInspektion" WHERE "A"."abliId" = "abliId") AS "Strassenname",
(SELECT "ablBezeichnung" FROM "baabLeitung" WHERE "baabLeiInspektion"."ablID" = "baabLeiInspektion"."ablID") AS "Haltung" 
FROM
"baabLeiInspektionsText" AS "A"
WHERE "A"."ablitSKBvAuto" = 6 OR "A"."ablitSKDvAuto" = 6 OR "A"."ablitSKSvAuto" = 6
Da kommt dann die Fehlermeldung:
SQL-Status: 42000
Fehler-Code: 4104

[Microsoft][SQL Server Native Client 10.0][SQL Server]Der mehrteilige Bezeichner 'baabLeiInspektion.ablID' konnte nicht gebunden werden.
Gruß Wolfgang

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 » So 3. Feb 2013, 08:56

Hallo Wolfgang,
smokie hat geschrieben: ...
RobertG hat geschrieben:Ähnlich wie die Spalte "Strassenname" kannst Du aus der Tabelle "baabLeiInspektion" alle weiteren gewünschten Felder einbinden. Schließlich müsste so auch eine Einbindung von Feldern aus "baabLeitung" über "ablId" möglich sein.
Das hat leider nicht funktioniert:

Code: Alles auswählen

SELECT
"A"."ablitInspektionstext",
"A"."ablitCharakterisierung1",
"A"."ablitCharakterisierung2",
"A"."ablitStation",
"A"."ablitSKDvAuto",
"A"."ablitSKSvAuto",
"A"."ablitSKBvAuto",
"A"."ablitId", 
(SELECT "abliStrassenname" FROM "baabLeiInspektion" WHERE "A"."abliId" = "abliId") AS "Strassenname",
(SELECT "ablBezeichnung" FROM "baabLeitung" WHERE "baabLeiInspektion"."ablID" = "baabLeiInspektion"."ablID") AS "Haltung" 
FROM
"baabLeiInspektionsText" AS "A"
WHERE "A"."ablitSKBvAuto" = 6 OR "A"."ablitSKDvAuto" = 6 OR "A"."ablitSKSvAuto" = 6
Kann auch so nicht funktionieren, da die Zeile

Code: Alles auswählen

(SELECT "ablBezeichnung" FROM "baabLeitung" WHERE "baabLeiInspektion"."ablID" = "baabLeiInspektion"."ablID") AS "Haltung" 
keine Beziehung zu der Tabelle hat, die mit dem Alias "A" versehen wurde.

Code: Alles auswählen

(SELECT "ablBezeichnung" FROM "baabLeitung" WHERE "ablID" = (SELECT "ablId" FROM "baabLeiInspektion" WHERE "A"."abliId" = "abliId")) AS "Haltung" 
Jetzt bezieht die Tabelle "ablBezeichnung" ihren entscheidenden Wert "ablId" über einen Subselect, der wiederum "baabLeiInspektionstext" als Grundlage hat. Wie weit diese Subselects schachtelbar sind habe ich nicht untersucht.

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

smokie
Beiträge: 10
Registriert: Mi 23. Jan 2013, 12:27

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

Beitrag von smokie » So 3. Feb 2013, 11:38

Hallo Robert,

klingt logisch... funktioniert aber leider nicht.

Fehlermeldung:
SQL-Status: 42S02
Fehler-Code: 208

[Microsoft][SQL Server Native Client 10.0][SQL Server]Ungültiger Objektname 'baabLeiInspektionsText'.
Meine Abfrage:

Code: Alles auswählen

    SELECT
    "A"."ablitInspektionstext",
    "A"."ablitCharakterisierung1",
    "A"."ablitCharakterisierung2",
    "A"."ablitStation",
    "A"."ablitSKDvAuto",
    "A"."ablitSKSvAuto",
    "A"."ablitSKBvAuto",
    "A"."ablitId",
    (SELECT "abliStrassenname" FROM "baabLeiInspektion" WHERE "A"."abliId" = "abliId") AS "Strassenname",
    (SELECT "ablBezeichnung" FROM "baabLeitung" WHERE "ablID" = (SELECT "ablId" FROM "baabLeiInspektion" WHERE "A"."abliId" = "abliId")) AS "Haltung" 
    FROM
    "baabLeiInspektionsText" AS "A"
    WHERE "A"."ablitSKBvAuto" = 6 OR "A"."ablitSKDvAuto" = 6 OR "A"."ablitSKSvAuto" = 6
RobertG hat geschrieben:Wie weit diese Subselects schachtelbar sind habe ich nicht untersucht.
Evtl. liegt es daran???

Gruß Wolfgang

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 » So 3. Feb 2013, 13:23

Hallo Wolfgang,

das Folgende funktioniert bei MySQL: 3 Tabellen - Name - Ort - Land. In "Name" steht "OrtID", in "Ort steht "LandID" jeweils als Fremdschlüssel.

Code: Alles auswählen

SELECT "A"."ID", "A"."Name",(SELECT "Ort" FROM "test"."Ort" WHERE "ID" = "A"."OrtID") AS "Ort",(SELECT "Land" FROM "test"."Land" WHERE "ID" = (SELECT "LandID" FROM "test"."Ort" WHERE "ID" = "A"."OrtID")) AS "Ort" FROM "test"."Name" AS "A"
Macht daraus eine editierbare Abfrage.

Kannst Du so ein einfaches Beispiel einmal testen? Bei den Bezeichnungen Deiner Felder kommt so schnell ein "I" statt eines "L" statt eines "i" zustande, dass sich das nur schwerlich nachvollziehen lässt, warum da "baabLeiInspektionsText" als ungültiger Objektname angesehen wird.

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


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