Announcement

Collapse
No announcement yet.

NO TDBEdit for Interbase ? ! ?

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

  • NO TDBEdit for Interbase ? ! ?

    <b>NO TDBEdit for Interbase ? ! ?
    <br>
    <p>
    Wieso kann man in Delphi nicht in DBEdit-Feldern editieren,<br>
    die auf TIBQuery zugreifen. Das selbe funktioniert mit TQuery,<br>
    sobald RequestLive = true ist.<br>
    Aber wo gibt man das bei der Interbase-Komponente ein ?
    <br>
    <br>
    Für Aufklärung bin ich jetzt schon dankbar.</b>
    <br>
    [email protected]

  • #2
    Hallo,

    einfach die TIBQuery durch die TIBDataSet austauschen!

    Wolfgang Lemmermeye

    Comment


    • #3
      Hab ich versucht, doch Post-Methode bewirkt trotzdem nichts.

      Vielleicht hat einer ein Beispielcode

      Comment


      • #4
        Hallo,

        bei IBX muss man sich - im Gegensatz zur bequemen BDE - fast um alles selber kümmern. Dies bedeutet in o.g. Fall folgendes:

        a) TIBQuery + TIBUpdateSQL = TQuery mit RequestLive <br>
        b) TIBDataSet + generierte SQL = TTable oder TQuery mit RequestLive

        Da <b>TIBDataSet</b> in jedem Fall gegenüber TIBQuery + TIBUpdateSQL vorzuziehen ist, muss man folgendes tun: <br>
        1. TIBDatabase + TIBTransaction konfigurieren <br>
        2. TIBDataSet mit TIBDatabase verbinden <br>
        3. Eigenschaft <b>SelectSQL</b> von TIBDataSet im Objektinspektor zuweisen <br>
        4. Rechter Mausklick auf TIBDataSet -> Dialog für die anderen SQLs (INSERT, UPDATE, DELETE) aufrufen, SQL generieren lassen <br>
        5. Dann verhält sich TIBDataSet wie TTable oder TIBQuery mit RequestLive.

        Das folgende Beispiel demonstriert dies:
        <pre>
        object DataModule1: TDataModule1
        OldCreateOrder = False
        Left = 192
        Top = 107
        Height = 602
        Width = 819
        object IBDatabase1: TIBDatabase
        Connected = True
        DatabaseName = 'C:\EK2000\Ibx\Database\IBXDEMO.GDB'
        Params.Strings = (
        'user_name=sysdba'
        'password=masterkey')
        LoginPrompt = False
        DefaultTransaction = IBTransaction1
        IdleTimer = 0
        SQLDialect = 1
        TraceFlags = []
        Left = 40
        Top = 24
        end
        object IBTransaction1: TIBTransaction
        Active = True
        DefaultDatabase = IBDatabase1
        Left = 40
        Top = 72
        end
        object IBDataSet1: TIBDataSet
        Database = IBDatabase1
        Transaction = IBTransaction1
        OnNewRecord = IBDataSet1NewRecord
        BufferChunks = 32
        CachedUpdates = False
        DeleteSQL.Strings = (
        'delete from AUTOINCTABLE'
        'where'
        ' ID = :OLD_ID')
        InsertSQL.Strings = (
        'insert into AUTOINCTABLE (ID, USERNAME, LOGINTIME)'
        'values (:ID, :USERNAME, :LOGINTIME)')
        RefreshSQL.Strings = (
        'select'
        ' ID, USERNAME, LOGINTIME '
        'from'
        ' AUTOINCTABLE'
        'where'
        ' ID = :ID'
        '')
        SelectSQL.Strings = (
        'select ID, USERNAME, LOGINTIME from AUTOINCTABLE'
        '')
        ModifySQL.Strings = (
        'update AUTOINCTABLE '
        ' set'
        ' USERNAME = :USERNAME, '
        ' LOGINTIME = :LOGINTIME'
        'where'
        ' ID = :OLD_ID')
        Active = True
        Left = 136
        Top = 24
        object IBDataSet1ID: TIntegerField
        FieldName = 'ID'
        ReadOnly = True
        end
        object IBDataSet1USERNAME: TIBStringField
        FieldName = 'USERNAME'
        Required = True
        Size = 8
        end
        object IBDataSet1LOGINTIME: TDateTimeField
        FieldName = 'LOGINTIME'
        Required = True
        end
        end
        object DataSource1: TDataSource
        DataSet = IBDataSet1
        Left = 208
        Top = 24
        end
        object IBSQL1: TIBSQL
        Database = IBDatabase1
        ParamCheck = True
        SQL.Strings = (
        'select'
        ' GEN_ID(Gen_AutoIncTbl,1) as NEWKEY'
        'from'
        ' RDB$DATABASE')
        Transaction = IBTransaction1
        Left = 136
        Top = 80
        end
        end
        </pre&gt

        Comment


        • #5
          <br>@A.Kosch:
          <br>Hallo
          <br>
          <br>Sie schreiben:
          <br>"4. Rechter Mausklick auf TIBDataSet -> Dialog für die anderen SQLs (INSERT, UPDATE, DELETE) aufrufen, SQL generieren lassen "
          <br>
          <br>bei mir sehe ich jedoch keinen Dialog für insert ... in dem erscheinenden PopUp Menü
          <br>gibt es noch eine andere Möglichkeit, diesen Code zu Generieren?
          <br>wenn nicht:
          <br>bin ich zu ADO verwöhnt ;-) oder ist das mit TIBDataSet ein Weg in die falsche Richtung (wenn man die insert usw Anweisungen auch noch mal alle von Hand erstellen muß)(ist ja schon zusätzlicher Aufwand)
          <br>
          <br>mfg
          <br>p

          Comment


          • #6
            Hallo,

            normalerweise (in früheren IBX-Versionen) war im Kontextmenü (rechte Maustaste) der Menüeintrag <b>Dataset-Editor...</b> zu lesen. Bei der späteren IBX-Patches wurde dieser Eintrag per Bug durch den Text "<i>Der Parameter %s konnte.....</i>" ersetzt :-)

            Erst dann, wenn man sich das brandneue IBX-Patch <b>4.51</b> einspielt, taucht dort wieder der "alte" Menüeintrag <b>Dataset-Editor...</b> auf.

            Mann muss nicht diesen Editor verwenden, alle SQLs können auch direkt von Hand im Objektinspektor eingetragen werden. Allerdings gibt es keinen Grund, auf den bequmenen SQL-Generator freiwillig zu verzichten

            Comment


            • #7
              wenn man (Enterprise Edition vorausgesetzt) IBDataSet, DataSetProvider und ClientDataSet einsetzt, generiert der Provider das SQL. Zusammen mit DataSetFields sind dann auch Master/Detail Beziehungen updatebar inklusive referentieller Integrität

              Comment

              Working...
              X