🙏 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

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

Beitrag von smokie » Mo 4. Feb 2013, 09:53

Hallo Robert,
RobertG hat geschrieben:Kannst Du so ein einfaches Beispiel einmal testen?
ich habe das mal nachvollzogen. Wenn ich den Code ein wenig verändere

Code: Alles auswählen

SELECT "A"."ID", "A"."Name", "A"."OrtID", ( SELECT "Ort" FROM "test"."dbo"."Ort" WHERE "ID" = "A"."OrtID" ) AS "Ort", ( SELECT "Land" FROM "test"."dbo"."Land" WHERE "ID" = ( SELECT "LandID" FROM "test"."dbo"."Ort" WHERE "ID" = "A"."OrtID" ) ) AS "Ort" FROM "test"."dbo"."Name" AS "A"
dann funktioniert es. MS SQL Server verlangt hinter der DB noch die Angabe "dbo".

Hier kann ich nun einen neuen Namen anlegen. Ort und Land natürlich nicht. In der Abfrage habe ich nun noch den Fremdschlüssel auf "Ort" hinzugefügt. Wenn ich den dann eingebe und den Datensatz speichere, dann werden Ort und Name auch nachgezogen. In einem einfachen Formular basierend auf der Abfrage (ohne Unterformulare etc.) funktioniert es ebenfalls.

Ich habe nun folgende Abfrage nochmal ausprobiert:

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
Und jetzt funktioniert es plötzlich. Nun kann ich hier Werte ändern und es kommt auch keine Fehlermeldung mehr. Warum das so ist, weiß ich allerdings nicht, ich habe den Code wirklich kopiert.

Nun muss ich nochmal versuchen, die anderen beiden Tabellen mit einzubinden. Wie ich das hinbekommen soll, weiß ich allerdings noch nicht, weil die Tabellen von der Tabelle "baabLeiInspektionstext" über die anderen Tabellen verknüpft sind.

Erst mal aber Danke für Deine Hilfe.

Gruß Wolfgang

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

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

Beitrag von smokie » Mo 4. Feb 2013, 14:26

Hallo Robert,

auch mit den verschachtelten Sub-Abfragen gibt es Ergebnisse, die sowohl in der Abfrage als auch im Formular editierbar sind.

Aber trotzdem noch zwei weitere Fragen:

Die Abfrage

Code: Alles auswählen

SELECT 
	( SELECT "alprBezeichnung" 
		FROM "baalProjekt" 
		where ("alprBezeichnung" = 'KS_ABS01' 
			AND "alprID" = ( SELECT "alprID" 
				FROM "baalGemeinde" 
				WHERE "algeID" = ( SELECT "algeID" 
					FROM "baabLeitung" 
					WHERE "ablID" = ( SELECT "ablId" 
						FROM "baabLeiInspektion" 
						WHERE "A"."abliId" = "abliId" ))))) 
		AS "Projektvariante",
	( SELECT "algeID" 
		FROM "baalGemeinde" 
		WHERE "algeID" = ( SELECT "algeID" 
			FROM "baabLeitung" 
			WHERE "ablID" = ( SELECT "ablId" 
				FROM "baabLeiInspektion" 
				WHERE "A"."abliId" = "abliId" ) )) 
		AS "GEID",
	( SELECT "abliDatum" 
		FROM "baabLeiInspektion" 
		WHERE "A"."abliId" = "abliId" ) 
		AS "Strassenname", 
	( SELECT "ablBezeichnung" 
		FROM "baabLeitung" 
		WHERE "ablID" = ( SELECT "ablId" 
			FROM "baabLeiInspektion" 
			WHERE "A"."abliId" = "abliId" ) ) 
		AS "Haltung",
	"A"."ablitInspektionstext",
	"A"."ablitCharakterisierung1", 
	"A"."ablitCharakterisierung2", 
	"A"."ablitStation", 
	"A"."ablitSKDvAuto", 
	"A"."ablitSKSvAuto", 
	"A"."ablitSKBvAuto"
FROM "baabLeiInspektionsText" AS "A"
WHERE "A"."ablitSKBvAuto" = 2 
	OR "A"."ablitSKDvAuto" = 2 
	OR "A"."ablitSKSvAuto" = 2
ergibt folgendes Ergebnis:
Ergebnis Abfrage
Ergebnis Abfrage
Abfrage.JPG (59.18 KiB) 3453 mal betrachtet
1. Frage:
kann man erreichen, dass in diesem Fall die 2. Spalte "GEID", welche nur für die Tabellenverknüpfung erforderlich ist, nicht mit ausgegeben wird.

2. Frage:
Es sollen eigentlich nur Werte angegeben werden aus der Projektvariante "KS_ABS01". So habe ich es in der ersten Select-Abfrage auch angegeben. Es werden aber trotzdem alle Zeilen ausgeben. Die Werte in der Spalte "Projektvariante" werden nur nicht dargestellt, wenn sie <> 'KS_ABS01' sind. Wie mache ich das?

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 » Mo 4. Feb 2013, 17:51

Hallo Wolfgang,
smokie hat geschrieben: 1. Frage:
kann man erreichen, dass in diesem Fall die 2. Spalte "GEID", welche nur für die Tabellenverknüpfung erforderlich ist, nicht mit ausgegeben wird.

2. Frage:
Es sollen eigentlich nur Werte angegeben werden aus der Projektvariante "KS_ABS01". So habe ich es in der ersten Select-Abfrage auch angegeben. Es werden aber trotzdem alle Zeilen ausgeben. Die Werte in der Spalte "Projektvariante" werden nur nicht dargestellt, wenn sie <> 'KS_ABS01' sind. Wie mache ich das?
Zu 1. Frage - Die Abfrage für GEID wird doch gar nicht benötigt. Das machst Du in den Unterabfragen. Kann also raus bleiben. Versuche es einfach ...
Wenn Du komplett nur Werte aus der entsprechenden Projektvariante haben möchtest, dann musst Du dies in den Bedingungen der Gesamtabfrage klar machen, und nicht in der Unterabfrage. Das muss also ganz zum Schluss mit
AND "A"."abliId" IN (SELECT ...)
stehen.
Mit IN musst Du diesen Vergleich starten, da es ja mehrere abliId geben kann die auf die Projektvariante zutreffen. Der Subselect wird also mehrere Werte wiedergeben.

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 » Di 5. Feb 2013, 08:33

Hallo Robert,
RobertG hat geschrieben: Zu 1. Frage - Die Abfrage für GEID wird doch gar nicht benötigt. Das machst Du in den Unterabfragen. Kann also raus bleiben. Versuche es einfach ...
Versuch war erfolgreich. Da hast Du Recht: die Verknüpfung auf die Tabelle "baalGemeinde" ist schon in der Unterabfrage zu "Projektvariante" erhalten - das hatte ich nicht erkannt. So fit bin ich in SQL leider nicht.
RobertG hat geschrieben:Wenn Du komplett nur Werte aus der entsprechenden Projektvariante haben möchtest, dann musst Du dies in den Bedingungen der Gesamtabfrage klar machen, und nicht in der Unterabfrage. Das muss also ganz zum Schluss mit
AND "A"."abliId" IN (SELECT ...)
stehen.
Mit IN musst Du diesen Vergleich starten, da es ja mehrere abliId geben kann die auf die Projektvariante zutreffen. Der Subselect wird also mehrere Werte wiedergeben.
Leider weiß ich hier nicht so genau, wie ich da den Vergleich formulieren muss (wie gesagt, so fit bin ich in SQL leider nicht).

Ich habe das so formuliert:

Code: Alles auswählen

...
AND "A"."abliID" IN (SELECT "alprBezeichnung" FROM "baalProjekt" WHERE ("alprBezeichnung" = 'KS_ABS01' AND  "alprID" = ( SELECT "alprID" FROM "baalGemeinde" WHERE "algeID" = ( SELECT "algeID" FROM "baabLeitung" WHERE "ablID" = ( SELECT "ablId" FROM "baabLeiInspektion" WHERE "A"."abliId" = "abliId" ) ) ) ) )
Das Ergebnis ist aber identisch mit dem vorigen.

Übrigens:
smokie hat geschrieben:Mo 4. Feb 2013, 09:53
Und jetzt funktioniert es plötzlich. Nun kann ich hier Werte ändern und es kommt auch keine Fehlermeldung mehr. Warum das so ist, weiß ich allerdings nicht, ich habe den Code wirklich kopiert.
Das die Abfrage mal funktioniert und mal nicht, liegt vermutlich an der jeweiligen Rechner-Umgebung. Bei mir zu Hause habe ich einen Windows 64bit-Rechner und im Büro 32bit. Bei der 64bit Version scheint da irgendwas zu haken.

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 » Di 5. Feb 2013, 09:05

Hallo Wolfgang,

ich münze das einmal wieder auf das einfacherer Beispiel, weil ich mit den Bezeichnungen von Dir völlig durcheinander komme und das Beispiel von mir hier auf dem Rechner nachvollziehen kann:

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" 
WHERE "A"."OrtID" IN (SELECT "ID" FROM "test"."Ort" WHERE "LandID" IN (SELECT "ID" FROM "test"."Land" WHERE "Land" = 'NRW'))
In die eine Richtung kannst Du mit einer Gleichsetzung ermitteln, da es sich um eindeutige Werte (SELECT gibt nur einen Wert aus) handelt. In der anderen Richtung musst Du einen Mengenvergleich starten, da die SELECT-Anweisung gegebenenfalls auch mehrere Werte beinhalten kann.

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