Announcement

Collapse
No announcement yet.

IBQuery´s updaten

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

  • IBQuery´s updaten

    Hallo,

    wenn ich eine IBQuery mit IBQuery.Edit ändern will, bekomme ich die Meldung: "Eine Datenmenge, die nur zum Lesen ist, kann nicht geändert werden".

    Transaktion usw. sind vorhanden, und auf der DB bestehen Schreibrechte. Woran kann das liegen ?? Oder gibt es ein Pendant zu der BDE-Query-Eigenschaft "RequestLive" ??

    Thanks schon mal...

    Christoph Stadler

  • #2
    Hallo,

    wenn man auf die Kompatibilitäts-Komponente TIBQuery mit ihrer eingeschränkten Funktionalität nicht verzichten möchte, muss man zur Kombination von TIBQuery <b>+ TIBUpdateSQL</b> zurückgreifen.

    Anstelle von TIBQuery würde ich <b>TIBDataSet</b> einsetzen, da mit dieser Komponenten diese Einschränkung nicht besteht

    Comment


    • #3
      Danke.

      Das heißt, ich kann die Datenmenge nur über SQL-Befehle updaten ?

      Comment


      • #4
        Im Prinzip ja aber

        a)Die BDE hast das früher auch gemacht nur hast Du es nicht gesehen

        b)Bei TIBTable erfolgt die Simulation des sql, nur erwarte nichts gutes oder gar performantes

        c) so ist das nun mal wenn man mit SQL Server arbeitet

        d) beim lokalen midas.dll Einsatz mit TDataSetProvider und TClientDataSet kannst Du die für den Defaultfall das SQL erzeugen lassen und bei speziellen Dingen es selber tun

        e) bei TIB DataSet erreichts Du über das Kontextmenu einen Dialog, der die das notwendige SQL hinterlegst (TIBUpdateSQL vermutlich auch

        Comment


        • #5
          Danke,

          nun mache ich das mit TIBUpdateSQL. Aber wie bekomme ich Blobs da rein. Da muß es doch eine <b>Möglichkeit</b> geben, die Felder zu bearbeiten

          Comment


          • #6
            Was kommst den in die Blobs?

            Solange es Text ist, kannst Du sie als Text Parameter behandeln, ansonsten kann man einem Parameter die Daten auch via Stream zuweisen, dann geht auch dieses

            Comment


            • #7
              Danke nochmals. Nun habe ich eine Lösung, die Funktioniert. War ja eigentlich gar nicht so schwer.

              Ich Poste hier nochmal das Ergebnis meiner Versuche, für alle , die irgendwann auch vor dier Frage stehen.

              procedure TForm1.Button1Click(Sender: TObject);<br>
              var<br>
              DB : TIBDatabase;<br>
              Tr : TIBTransaction;<br>
              TD : TIBDataSet;<br>
              TU : TIBUpdateSQL;<br>
              <br>
              begin<br>
              // Erstellen und verbinden mit der Datenbank<br>
              DB := TIBDatabase.Create(Self);<br>
              DB.DatabaseName := 'E:\DB\DatenDB.gdb';<br>
              DB.LoginPrompt := False;<br>
              DB.Params.Clear;<br>
              DB.Params.Add('USER_NAME=SYSDBA');<br>
              DB.Params.Add('PASSWORD=masterkey');<br>
              DB.Open;<br>
              <br>
              // Transaktion starten<br>
              Tr := TIBTransaction.Create(Self);<br>
              Tr.DefaultDatabase := DB;<br>
              Tr.StartTransaction;<br>
              <br>
              // Ein DataSet anlegen<br>
              TD := TIBDataSet.Create(Self);<br>
              TD.Database := DB;<br>
              <br>
              // Einen Update ausführen<br>
              TU := TIBUpdateSQL.Create(Self);<br>
              TU.DataSet := TD;<br>
              TU.ModifySQL.Text := 'UPDATE FIRMA SET DATUM_EDIT = ATUM, USER_NEU = :USER';<br>
              TU.Query[ukModify].ParamByName('DATUM').AsDateTime := Now;<br>
              TU.Query[ukModify].ParamByName('USER').value := 'Now';<br>
              TU.Query[ukModify].ExecSQL;<br>
              <br>
              // Nun die Transaktion beenden<br>
              Tr.Commit;<br>
              <br>
              // und alles vernichten...<br>
              TU.Free;<br>
              TD.Free;<br>
              DB.Close;<br>
              end;<br>

              Vielleicht hilfts jemandem weiter..

              Comment

              Working...
              X