Announcement

Collapse
No announcement yet.

Problem bei einem in beziehung stehenden Feld einen Wert zu speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem bei einem in beziehung stehenden Feld einen Wert zu speichern

    Hallo an alle Delphianer!!!

    Folgendes Problem habe ich!!

    Also ich versuche einen Import zu machen, bei den Stammdaten ist es mir gelungen nur in der Positionstabelle in der alle Tabellen verwendet werden (wie Rechnungen die z.B durch eine KundenNR mit der Kundentabelle verbunden ist,..) habe ich noch meine Schwierigkeiten.

    Die Positionstabelle wird mit einer Beziehung(referentielle Integrität!) mit den anderen Tabellen verknüpft.

    Jetzt versuche ich z.B die KundenNr (von der alten Tabelle) zu importieren um sie nachher zu aktualisieren (Vergleich mit einer Hilfstabelle alt--> neu!)

    Doch wenn ich versuche die alten KundenNr zu Speichern (siehe CODE!) dann bekomme ich folgende Meldung <b>"Der Datensatz kann nicht hinzugefügt oder geändert werden, da ein Datensatz in der Tabelle "Kunden" mit diesem Datensatz in Beziehung stehen muß"</b>

    CODE:
    <pre>
    z_btable.insert;
    z_btable.FieldByName('e_key').asstring := q_btable.FieldByName('e_key').asstring;
    z_btable.post;
    </pre>

    WER WEIß EINE LÖSUNG FÜR MICH???

    BINE

  • #2
    Kann es sein das er nicht meckert wenn der e_key schon existiert?

    Ich meine ich suche gleich den richtigen (den neuen!) e_key und speichere den Wert in Tabelle, oder wird er dann auch meckern??

    BINE :

    Comment


    • #3
      Folgendes habe ich mir gedacht:

      Ich suche gleich den neuen e_key und setze diesen gleich in die posTabelle, wird das funktionieren?? Oder wird er da auch schreien??

      Wie könnte ich das noch lösen??

      BITTE es ist dringend

      BINE :

      Comment


      • #4
        Juhuu, folgendes habe ich gemacht:

        Statt den Code :

        <pre>
        z_btable.insert;
        z_btable.FieldByName('e_key').asstring := q_btable.FieldByName('e_key').asstring;
        z_btable.post;
        </pre>

        und nachher alle e_key's aktualliesieren habe ich folgendes gemacht:
        <pre>
        // der ekey muß gleich aktualisiert sein, weil eine Beziehung Positionen <-> Kunden besteht
        begin
        z_etable.locate('e_bez',q_etable.FieldByName('e_na me').asstring,[loCaseInsensitive]);
        z_btable.FieldByName('e_key').asstring := z_etable.FieldByName('e_key').asstring;
        end;
        </pre>

        *GG

        Comment


        • #5
          HELP!!!

          Also ich habe den Code jetzt erweitert, aber er nützt nichts er schreibt mir in die Positionstabelle immer die gleiche e_key

          <pre>
          try
          q_etable.locate('e_key',q_btable.FieldByName('e_ke y').asstring,[loCaseInsensitive]);
          z_etable.locate('e_key',q_etable.FieldByName('e_ke y').asstring,[loCaseInsensitive]);
          z_btable.FieldByName('e_key').asstring := z_etable.FieldByName('e_key').asstring;
          except
          ShowMessage('Es wurde kein Kunde gefunden, Positionstabelle ist fehlerhaft!');
          exit;
          end;
          </pre>

          Folgendes wollte ich verwirklichen:

          1) Ich geh in die alte Kundentabelle und suche den Wert der in der positionstabelle steht und mache ihn zum Aktuellen DS

          2) Dann suche ich in der neuen Kundentabelle den neuen e_key und mache diesen zu meinen aktuellen

          3) Speichere den aktuellen e_key (kunde neu tabelle) in die Positionstabelle

          Aber er nimmt mir immer den ersten

          Was mache ich falsch

          BINE :

          Comment

          Working...
          X