Hallo Mechtilde,

damit ich mich hier nicht wiederholen muss, lies doch bitte meine Antwort an Robert von heute Morgen nach ;-)

Am 03.04.2010 08:53, schrieb Mechtilde:
Hallo Marino,

Salvalaggio Marino schrieb:
Hi Mechtilde,
Mechtilde schrieb:
Hallo Marino,
Marino Salvalaggio schrieb:

Hi,

habe mir  das Ganze noch mal durchdacht.

Bei MS-Access wird in der Regel erst inkrementiert, wenn die erste Zeile
gefüllt ist und mit "Rtn" geschlossen wird, bez. wenn mit "Tab" aus dem
letzten Feld der Zeile herausgesprungen wird.

Auch bei der internen HSQL DB von Base wird erst inkrementiert, wenn der
Datensatz verlassen wird.


Das hatte ich auch angenommen, konnte mir nur nicht erklären, warum das
Zeitweilig zu versagen scheint....
In der Zwischenzeit habe ich das Ganze soweit eingekreist, dass dieses
Verhalten nur bei zweispaltigen Tabellen auftritt.
Ich habe es nochmal mit HSQL DB getestet. Zweispaltige Tabellen machen
da keine Ausnahme.

Habe in der Zwischenzeit die Fehlerhafte Datei gelöscht und neu angelegt. Jetzt funktioniert das bei mir auch. Leider kann ich nicht herausfinden, was da schief gelaufen war.
War nicht eben klug, das zu löschen....
weist.
Das muss du genauer erklären, was du mit Zeiger meinst. Wie gibst Du
überhaupt Werte ein?

Das Wort Zeiger hatte ich benutzt, weil in meinem Konstrukt die Funktion mehrfach aufgerufen wird und somit ein Zeiger (Übergabeparameter) auf einen betreffenden Zähler zeigt.

Hätte hier zum Verständnis besser nur Zähler schreiben sollen. :-[
Die Werteeingabe erfolgt immer über ein Formular, ist zwar aufwendig aber sicher. Ich vertrete die Ansicht, dass es verboten ist Direkteingaben in Tabellen vorzunehmen. Einzige Ausnahme ist, wenn ich das Funktionieren meiner Konstruktion austeste ;-)
Was aber grundsätzlich (auch bei Access) fehlt ist die Möglichkeit,
durch eine "Funktion" alle ungenutzten ID's generell zu löschen, d.H.
den Zähler zu "nullen" und eine erneutes Durchnummerieren zu erzwingen.
Wie ich durch Thomas erfahren habe, ist die Funktion bei MS-Access zu
dem Teil erfüllt, dass das "Nullen" bei einer leeren Tabelle möglich
ist. Was also bedingt, dass alle Datensätze gelöscht sein müsse. Da kann
man ja gleich so weiterfahren, die Tabelle löschen und neu erstellen... :-P

Das ist und wird bei relationalen Datenbank-Management-Systemen nicht
ohne Weiteres möglich werden.

Dieses - von Dir gewünschte Verhalten - steht im Widerspruch einer
Datenintegrität.
Mir ist dabei schon klar, dass dadurch die Konsistenz der Daten
gefährdet ist. Daher müsste diese "Funktion" nur solange möglich sein,
wie die Tabelle noch Unverknüpft ist bez. die Verknüpfungen vorher
gelöst wurden.
Datenbank-Management-Systeme (DBMS) sollten darauf ausgelegt sein, die
Daten-Integrität selber zu verwalten. Daher wirst Du von
Datenbank-"Designern" immer wieder erfahren, dass DBMS, die dies nicht
erfüllen, unbrauchbar sind.

Und dies kommt bei Datenbanken nur äußerst selten vor. So dass die
Prüfung, ob so etwas im konkreten Fall durchgeführt werden dürfte viel
zu viele Resourcen bei der Prüfung schlucken würde.

Da hast Du sicherlich recht!

Darum wird ein lösen der Verknüpfung zur Freigabe eines solchen Prozedur
äusserst komplex und sprengt wahrscheinlich die Möglichkeiten.
Beim Erstellen und Erfassen *vor* der Bindung an andere Tabellen
hingegen sollte es durchaus möglich sein.
Das macht man normalerweise nicht.

Der professionelle Weg eine Datenbank zu erstellen, ist, zunächst am
Reißbrett die Struktur und Abhängigkeiten der Tabellen zu entwerfen.
Dies dann auf das gewünschte DBMS zu übertragen. Anschließend wird das
benötigte Frontend erstellt.

Der Vorteil wäre, dass dadurch die Hierarchie, sollte sie einmal falsch
angelegt sein, direkt korrigiert werden kann indem die Zeilen verschoben
nun neu in die richtige Reihenfolge gebracht werden können.

Welche Hierarchie?

Das gilt in der Regel ja nur für Auswahltabellen. Bei diesen ist es ja
oft wichtig, dass die Reihenfolge eingehalten wird.
Warum?
Natürlich kann das auch nachträglich mit einer Abfrage korrigiert
werden, nur wenn die Auswahl weder Alphabetisch noch Numerisch sortiert
werden kann wird' s problematisch. Nimm nur mal die Monatsnamen oder
Haltestellen einer Bahnlinie, wenn keine Lauf-Nummer dazu verknüpft ist
- wie willst du die dann in die richtige Reihenfolge sortieren.
Warum?

Zu diesen Fragen verweise ich dich wieder die das Eingangs genannte Mail.

Wenn Du eine Ziffer für eine Sortierung benötigst, solltest Du eine
zusätzliche Spalte einfügen.
Dazu bin ich schliesslich auch übergegangen, da die genannten Probleme
auftraten :-D
Sonst bleibt nur die Möglichkeit prinzipiell auf "Autowert" zu
verzichten und statt dessen die ID händisch zu erzeugen, oder eine
zweite Spalte für eine durchgängige ID einzurichten.

Genau das ;-)
Hab übrigens festgestellt, dass in einer Spalte mit AutoWert erzeugten Nummern es durchaus möglich ist diese nachträglich zu editieren. Dabei ist nur die Funktion KeineDuplikate aktiv. Der Zähler springt dabei auf die höchste eingegeben Nummer +1. Ob das so gewollt ist weiss ich nicht. Jedenfalls ist so die Möglichkeit gegeben nachträglich die Nummerierung zu korrigieren und mit der Sortierung die Reihenfolge in die gewünschte Form zu bringen.
Das liebe Mechtilde ist mir schon klar - Was ich hier bezwecke ist, ohne
zusätzliche Programmierung zum Ziel zu kommen. Ich verweise dabei auf
den Diskurs: /Re: [de-users] Interaktiven Fragebogen erstellen/
Sich mit www.hsqldb.org zu beschäftigen, heißt nicht, sich auch mit
Programmierung zu beschäftigen.

Das *kann* kommen, *muss* aber nicht. Ich habe mich auch mehrere Jahre
mit MySQL beschäftigt, ohne an Programmierung nur zu denken.

Bei mir liegt der Fall gerade umgekehrt. Ich hatte mich bisher ausschliesslich auf der Programmierebene bewegt ohne je einen Blick auf SQL zu werfen =-O

Gruss Marino


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Antwort per Email an