Hallo Günter,
Günter K hat geschrieben:Was mache ich falsch?
Hier sind einige Punkte zu nennen.
Für "Programmierung unter OO" gibt es das Unterforum
Basic und Java, wohin alle Fragen zu Makros gehören.
Ich habe einen Moderator gebeten, die Diskussion zu verschieben, und bitte dich dringend, die Diskussion nicht doppelt zu eröffnen. Danke für die Erledigung, lorbass!
In diesem Unterforum gibt es "ganz oben"
Informationen zur StarBasic-Programmierung. Auch die dort genannten Links können helfen - auch zur Suche im Forum.
Zur Formatierung gibt es den
Code-Button. Bitte markiere künftig Code als solchen; das liest sich erheblich besser und macht beispielsweise auch Einrückungen sichtbar. (Wenn du dich angemeldet hättest, könntest du das auch nachträglich korrigieren.)
Die gemeinsame Spalte hat in einer Tabelle nichts zu suchen. Die "atomaren" Informationen sind Vorname und Nachname. So müssen sie gespeichert werden. Wenn du die zusätzliche Information "Person" speichern würdest, wäre das eine doppelte Speicherung gleichartiger Information. Wenn irgendwann einmal ein Name geändert wird, muss auch "Person" geändert werden - eine ständige Fehlerquelle. Wenn du für einen Brief die weitere Schreibweise "Vorname + Leerzeichen + Nachname" haben willst, soll das als weitere Spalte gespeichert werden? Oder willst du mit einer komplizierten SQL-Funktion die Kombination "Person" auflösen und neu zusammensetzen? Nein, das einzig richtige Verfahren ist die getrennte Speicherung dieser Information. Siehe auch das Thema
Normalisierung bei der "Einführung in SQL".
Sinnvoll ist stattdessen, die Kombination in einem
SELECT zu erstellen, am einfachsten so:
Code: Alles auswählen
SELECT "nam" || ', ' || "vnam" AS "pers"
FROM "Kuenstler";
Das geht dann genauso mit allen anderen Varianten, die du für Briefe oder Listen benötigst.
Wenn tatsächlich (solche oder andere)
Informationen gespeichert werden sollen, gibt es in erster Linie den SQL-Befehl UPDATE, der auch per Makro ausgeführt werden kann (mit executeUpdate statt executeQuery):
Code: Alles auswählen
UPDATE "Kuenstler"
SET "pers" = "nam" || ', ' || "vnam";
Nach so vielen generellen Bemerkungen möchte ich noch auf deinen Code und deine Fehlermeldung eingehen. Es ist durchaus möglich, wenn auch mit SQL eher unüblich, das Ergebnis einer Abfrage UPDATABLE zu machen. Das geht aber nur dann, wenn die Tabelle einen Primärschlüssel (vorzugsweise ID als AutoWert) enthält und diese ID in der Abfrage enthalten ist; denn nur unter Bezug auf den Primärschlüssel können Änderungen in der Datenbank gespeichert werden. Vor allem diese Bedingung wird bei deinem Ablauf verletzt; das wird auch dadurch deutlich, dass sich mit dem Eintragen und Ausführen des SQL-Befehls der Wert von Updatable auf ReadOnly ändert.
Weiterhin frohes Schaffen! Jürgen