0

Verknüpfte Tabellen

Hallo,

wie muss ich denn bei der N:M Beziehung in dem Beispiel die Tabelle Mitarbeiter mit Datenfeldern bestücken? Ich kann ja einem Datenfeld nicht zwei andere Tabellen zuordnen.

236 Antworten

null
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    ich sehe es wird meinerseits bald eine Schachtel Pralinen und/oder ein Drink fällig ;-) Danke
    Gruß Georg_0815
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    auf dem iPad funktioniert es sehr gut.
    Auf dem iPhone nur teilweise. (Beide Geräte mit der selben Apple-ID und auf Beide die selbe Version Ninox):
    und zwar Zeile 13: 'delete (select T1);'
    wird auf dem iPhone nicht richtig ausgeführt. Zwar werden die Daten in T1 gelöscht, aber wenn man auf dem Pfeil "<" oben links klickt, gelangt man wieder im Formular von T1, wo die Daten die gelöscht werden sollten, sichtbar sind. Ich bräuchte einen Befehl der auch die Daten vom Formular löscht (leert). Danke Vorab.
    Schönen Sonntag
    Georg_0815
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Georg_0815,
    der Pfeil ist sowas wie ein undo Befehl und da kann man leider nichts machen. Ich habe versucht zusätzlich einen leeren Datensatz zu generieren, den zu öffnen und dann zu schließen. Mit dem Pfeil komme ich aber immer noch auf den Formular mit nicht existierenden Daten. Ich finde die iPhone App sowieso nicht besonders schön. Die iPhones-Bildschirme sind mittlerweile so groß, dass alle iPad Befehle lesbar wären.

    Liebe Entwickler,

    Ist es vielleicht ein Versuch wert, zumindest für gerate ab iPhone6, die verkleinerte iPod Oberfläche zu verwenden?

    Grüße
    Leo
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Thema:
    Datensatz in einer anderen Tabelle komplett löschen nach Betätigen einer Schaltfläche in der aktuellen Tabelle

    Hallo Leo,
    ich habe vor deiner Zeile 13 hinzugefügt:
    openRecord(record(T1,number(1)));
    in der Hoffnung, dass ein gelöschter Satz nicht aufgerufen werden kann doch ohne Erfolg. Ich danke Dir für Deine Bemühungen.
    Leo, interpretiere ich Deinen letzten Satz richtig - die Hoffnung stirbt zuletzt - dass es in der IPod-Version funktioniert? (Ich hoffe es war kein Schreibfehler von Dir!) Ich versuche eine Ninox-Lösung (unentgeltlich! d.h. der Nutzen für mich ist, dass ich mit seinen Daten weniger Zeitaufwand = Arbeit) für einen Kunden zu "basteln", der einen Mac und 2 iPods im Einsatz hat.
    Gruß Georg_0815
    (PS: es ist interessant was Google anzeigt wenn man nach 'ninox forum' sucht)
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Georg_0815,
    Ich habe mich verschrieben: es sind doch iPads.
    • telakis
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    Danke für die Antwort, (auch wenn sie mir nicht schmeckt :-( )
    Schönen Start in Woche
    Georg_0815
    • Lasse
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo,
    Ich versuche mich gerade an meiner ersten Datenbank. Ich habe gelesen, dass die 3. Normalform benutzt wird um Redundanzen in den Daten zu verhindern. Ein einfaches Beispiel sind Adressdaten bei denen es eine extra Tabelle für Postleitzahlen und Orte gibt. Ich habe also jetzt zwei Tabellen, "Personen" und "Orte", und eine 1-N Verknüpfung.
    Mein Problem beginnt, wenn ich in einem Eintrag die Adresse ändern möchte. Klickt man in einem Datensatz aus "Personen" auf den Eintrag Wohnort, der mit der Tabelle "Orte"verknüpft ist, so wird der entsprechende Eintrag aus der Tabelle "Orte" angezeigt. Das ist im Prinzip das richtige Verhalten, führt aber in diesem Fall dazu, dass der Ort für alle Personen, die dort wohnen, geändert wird. Für mich kein Problem, weil ich weiß, dass ich erst den alten Wohnort löschen muss um den Datensatz dann mit einem neuen zu verknüpfen, für den Laienanwender aber eine Katastrophe. Wie mache ich das richtig? Und wie stelle ich sicher, dass am Ende jede Postleitzahl in "Orte" nur einmal existiert?
    Viele Grüße und herzlichen Dank! Lasse
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Lasse,
    wenn die Datenbank für mehrere Benutzer angedacht ist, kannst du die Tabelle mit PLZ/Orten vor Änderungen schützen. Dafür gibt es ja die Formularfelder wie "schreiben darf".
    Was Duplikate angeht - Ninox hat keinen konsequenten Schutz gegen Duplikate wie z.B. SQL-Server. Du kannst aber ein "Alarmsystem" aufbauen, etwa so:

    let myPLZ := PLZ;
    if cnt(select Orte where PLZ = myPLZ) > 1 then
    alert("DOPPELTER EINTRAG!");
    PLZ := null
    else
    void
    end

    Achtung dies funktioniert vollständig nur in der App. Bei Webbaplikation kriegst du kein Alarm, nur die PLZ wird geleert.

    Grüße
    Leo
    • Peter_Bienert
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Ninox

    ich hadere mit folgendem Problem:
    Ähnlich wie bei Eurem Template "Veranstaltungen" weise ich Kunden auf "Kampagnen" zu, wobei jede Verbindung zwischen Kunde und Kampagnen einen Status hat.
    Soweit, so gut - ich habe da mit einer Untertabelle in Kunden gelöst, die mit Kampagnen (und natürlich mit Kunden) verknüpft ist und als Datenfeld einen Status hat.
    Wenn ich jetzt aus meiner recht grossen Kundenliste (>500) eine Auswahl von sagen wir mal 120 einer Kampagne zuweisen will, finde ich keinen anderen Weg, als das 120 mal manuell in der Untertabelle mit "suchen - Kampagne wählen - schliessen" zu machen. Da die Kampagne kein Datenfeld in der Tabelle Kunden ist, kann ich das nicht mit Massendatenänderung machen - das geht doch bestimmt simpler....

    Grüsse
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo pebee1961,
    du hast Recht, es gibt keine vollautomatische Methode dafür. Als Hilfe kann ich dir folgendes anbieten:
    1. Erstell ein Zahlenfeld namens, sagen wir : "Veranstaltungs_ID". Dieses kannst du auch verstecken.
    1. Erstell eine Befehlsschaltfläche mit der Formel:


    for II in select Kunden where Veranstaltungs_ID != null do
    let AA := (create Kampagnen);
    AA.Veranstaltungen := II.Veranstaltungs_ID;
    AA.Kunden := II.Nr;
    II.Veranstaltungs_ID := null
    end


    Die Namen muss du natürlich anpassen. Die Sichtbarkeit der Schaltfläche kannst du steuern bei "nur anzeigen wenn:":

    Veranstaltungs_ID != null


    Die Vorgehensweise:
    1. Merk dir die ID von der Veranstaltung.
    2. Öffne die Tabelle "Kunden" und klicke die in Frage kommenden Kunden an.
    3. Geh auf Massendatenänderung und wähl bei Veranstaltungs_ID "festen Daten zuweisen". Unten im Formularfeld sollte "Nur ausgewählte Datensätze aktualisieren" stehen.
    4. Gib die Nummer von den Veranstaltungs ID rein.
    5. Öffne einen ausgewählten Kundendatensatz und klicke auf Befehlsschaltfläche.

    Nicht besonders elegant, aber bei 150 Kunden viel schneller als manuell auswählen.

    Grüße
    Leo
    • Peter_Bienert
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Danke Leo

    verstehe ich richtig - für dich ist "Kampagnen" eine eigenen Tabelle, die die Relation zwischen Veranstaltungen und Kunden herstellt? - dann schreibe ich die Veranstaltung-No und die Kunden-No in die beiden entsprechenden Felder dieser M:N Relationstabelle - korrekt?

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 236Antworten
  • 72273Ansichten