Announcement

Collapse
No announcement yet.

Mehrere Fragen zu IBX

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

  • Mehrere Fragen zu IBX

    <br>Hallo,...
    <br>
    <br>D5 derzeit ohne FixPack; IB 5.x
    <br>
    <br>1)in diesem Forum wird die TIBDataSet Komponente empfohlen:
    <br>1.1) gibt es hier nicht wie bei TIBUpdateSQL (rechte Maustaste click) einen UpDate SQL Editor? (Ansonsten müßte man ja zu einem TIBDataSet auch eine TIBQuery und ein TIBUpdateSQL erzeugen um schnell die SQL Statements für TIBDataSet generieren zu können) Zudem finde ich dieses zusätzliche Erstellen von SQL Commandos sehr störend. Kann man das nicht abschalten?
    <br>1.2) die Funktionalität des TIBDataSet scheint mir stark beeinträchtigt. Bsp.:
    TIBDataSet(A) und TIBDataSet(B)
    B basiert auf A (B.DataSource = A)
    B.SelectSQL = "select * from KDAUFTR where kdauftr_id = :kdauftr_id"
    ändert sich nun der Datenzeiger in A, so ändert sich auch der Datenzeiger in B (so ist es ja auch voll und ganz richtig). Ändert sich jedoch erneut der Dansatzzeiger in A so ändert sich B nicht mehr. Ist das ein Bug? Oder muß man das anders programmieren als mit ADO?
    <br>1.3) Hier im Forum wurde oft auf Updates der IBX eingeangen. Bei Borland habe ich jedoch weder im Delphi Download Bereich noch in der Delphi Comunity ein Update explizit für IBX gefunden. Wo bekomme ich die Updates her? Oder ist das schon alles in dem SP1 für Delphi enthalten?
    <br>
    <br>2)Auf Grund von 1.1 und 1.2 verwenden wir nun erstmal TIBQuery und TIBUpdateSQL
    <br>2.1) Bei TIBQuery als auch bei TIBDataSet werden in einer DBLookUpComboBox nicht alle Elemente gezeigt sondern nur eins obwohl DropDownRows=7 ist. Eigenartigerweise erscheint die Dropdownlist mit einem Element und einer ganz kleinen Bildlaufleiste. Drückt man nun ein paar mal nach unten, auf der Bildlaufleiste, schließt danach wieder die Liste und öffnet erneut die DropDownList, so werden viel mehr Elemente angezeigt. Wieso? Bug?
    <br>
    <br>3) Delphi und Datenbanken (IB-Server) allgemein
    <br>3.1) Die BDE hat anscheinend keine Zukunft mehr. Ein direkter Nachfolger der BDE ist mir nicht bekannt (zumindest keiner der für D5 zu haben ist (oder gibt es schon DBExpress für D5?)). ADO und Interbase funktioniert nicht korrekt aufgrund des fehlende OLE DB Treibers (lediglich ODBC und das mit starken Einschränkungen (meine Meinung)). Und jetzt dieses Fiasko mit IBX. Die Entwicklung Delphi und Interbase wird einem nicht gerade erleichtert oder schmackhaft gemacht.
    Ist dem so oder ist das eine Überreaktion meiner seits?
    Oder ist das nur die Spitze des Eisberges, die ich derzeit sehe und das die wirklich "dicken Dinger" erst noch auf mich warten?
    In meiner <b>Verzweiflung</b> tendiere ich immer mehr und mehr zu Delphi, ADO und MS SQL 7 (hier gibt es zwar auch Probleme, aber nicht solche ;-))
    <br>Ich sehne mich nach einem C/S Datenbanksystem, mit dem ich ohne viel Aufwand Delphi Applikationen entwickeln kann. Applikationen bei denen ich alle Elemente aus der Karteikarte Datensteuerung benutzen kann und diese auch alle auf Anhieb funktionieren. Applikationen, bei denen ich mich nicht mehr um irgendwelche "Schwächen" der Datenzugriffkomponenten kümmern muß sondern mich voll und ganz auf die Applikation - und Datenbankprogrammierung konzentrieren kann.
    <br>
    <br>Es wäre nett wenn Ihr mir auch was zu dem Teil 3.1 schreiben könnt.
    <br>
    <br>Besten Dank!
    <br>
    <br>MfG
    <br>PS
    <br>
    <br>Nachtrag:
    <br>Habe gerade noch was im Forum herumgelesen.
    <br>@A.Kosch:
    <br>Wenn ich Sie richtig verstehe, benutzen Sie den Interbase überwiegend mit nicht datengebundenen Feldern. Des weiteren habe ich gelesen, das datengebundene Felder oder gar Grid's bei einer Client/Server DB Anwendung nicht umbedingt Sinnvoll sind. (Sinnvoller so sagen Sie wäre die Nutzung von StoredProcedures für die Ein -und Ausgabe). Kann man denn bei der Parameterübergabe an eine Stored Proc ohne weiteres Variablen vom SQLTyp Text übergeben (oder andere gigantiche Datentypen)? Wieso ist die Verwendung von Grids nicht Sinnvoll (ist für den user eine Erleichterung (er kann schnell und "intuitiv" seine Daten eintragen und ändern))? Abgeseh

  • #2
    Hallo,

    wer mit IBX hantieren will, muss sich dem monatlichen (manchmals auch wöchentlichen) Bugfix/Patch/Update-Zyklus unterwerfen und die URL <b>http://ww6.borland.com/codecentral/ccweb.exe/author?authorid=102</b> mindestens einmal pro Woche nach neuen Updates/Patches durchsuchen. Allerdings lassen sich die aktuellen IBX-Patches nur dann einspielen, wenn das <b>UpdatePack#1</b> für Delphi 5 auf dem Rechner ist. <br>
    <i>Da Delphi 5 offiziell als weniger fehlerbehaftet als Delphi 4 bezeichnet wird, tauchen diese Bugfixes in der Regel nicht auf der offiziellen Borland-Webseite auf :-)</i>

    zur Frage 1: <br>
    Nur <b>TIBDataSet</b> stellt alle IBX-Funktionen zur Verfügung, bei TIBQuery/TIBTable steht nicht der Funktionsumfang, sondern die BDE-Kompatibilität im Vordergrund, so dass funktionale Abstriche gemacht wurden. <br>
    In TIBDataSet muss man folgendes machen: <br>
    1. Eigenschaft <b>SelectSQL</b> im Objektinspektor zusammenklicken <br>
    2. Rechter Mausklick auf TIBDataSet -> Menüpunkt <b>Dataset-Editor...</b> aufrufen -> Primärschlüssel- und Update-Felder per Mausklick auswählen -> SQL generieren lassen <br>
    3. Im Objektinspektor kann man dann optional die generierten SQL ändern, zum Beispiel indem aus SelectSQL eine JOIN-Abfrage über mehrere Tabellen gemacht wird.

    TIBDataSet kann mit automatisch synchronisierten Master-/Detail-Abfrage umgehen, wenn aktuelle IBX-Versionen (generell sollte es mindestens 4.42, besser 4.51 sein) verwendet werden.

    zur Frage 2:<br>
    Der DBLookUpComboBox-Bug macht sich bei allen IBX-Komponenten und in jeder IBX-Version bemerkbar, da er ein Seiteneffekt des <b>RecordCount</b>-Verhaltens von IBX ist. Man muss im eigenen Programm folgendes machen:
    <pre>
    procedure TForm1.IBDataSet2AfterOpen(DataSet: TDataSet);
    begin
    DataSet.MoveBy(DBLookupComboBox1.DropDownRows);
    DataSet.First;
    end;
    </pre>
    Über <b>MoveBy</b> wird die Anzahl von Datensätzen nach dem Öffnen der Datenmenge eingelesen, die im DBLookupComboBox sichtbar sein sollen. Nach dem Einlesen stimmt auch der Wert in RecordCount.

    zur Frage 3: <br>
    DBExpress ist <b>nicht</b> der Nachfolger der BDE, sondern nur ein neues Zugriffsverfahren mit minimaler Funktionalität und minimalen Installationsaufwand (2 bzw. 3 DLLs), aber maximaler Performance. Aus meiner Sicht hat DBExpress nur in Mix-Projekten (Win32/Linux) eine Daseinsberechtigung.

    In der aktuellen Ausgabe von DER ENTWICKLER ist ein Beitrag von mir zu finden, der sich mit den gravierendsten IBX-Bugs sowie den Workarounds dafür beschäftigt.

    zur Frage 3.1: <br>
    Wer viel Wert auf eine möglichst fehlerfreie SQL-Datenbank sowie auf möglichst fehlerfreie Zugriffsobjekte legt, sollte nicht zum InterBase 6 und IBX greifen (auch der InterBase 6 ist immer noch im Beta-Stadium mit einer langen Fehlerliste). Die <b>IBO</b>-Komponenten (siehe <i>http://www.ibobjects.com</i>) sind stabiler/leistungsfähiger als IBX, haben aber auch mit den InterBase-Bugs zu kämpfen. <br>
    Auf der anderen Seite sieht die Kombination von <b>Microsoft SQL Server 2000</b> mit <b>MDAC 2.6</b> (ADO-Objekte von Microsoft) am ehesten danach aus, Leistungsfähigkeit mit Fehlerfreiheit kombinieren zu können.

    zum Nachtrag: <br>
    Dieser "Glaubens-Streit" ist eine reine Abwägung zwischen Performance und Bequemlichkeit. Man kann TDBGrids einsetzen, sollte sich aber dann später nicht über zu langsame SQL-Server beschweren, denn im Fall von Folge-Problemen liegt die Schuld nicht beim SQL-Server :-)<br>
    Der Einsatz von TDBGrid ist "harmlos", wenn die angezeigte Datenmenge klein (bis zu 1000 Datensätzen) gehalten wird. Der uneingeschränkte Zugriff (keine WHERE-Einschränkung) auf sehr grosse Tabellen ist allerdings der Super-GAU, wenn der Benutzer den Last-Button im TDBNavigator anklickt.

    Comment


    • #3
      <br>Vielen Dank Herr Kosch!
      <br>
      <br>Nach dem Update von Delphi und dem neuesten Patch für IBX habe ich keine Probleme mehr gehabt (bis jetzt ;-))
      <br>Das mit dem "DataSet.MoveBy(DBLookupComboBox1.DropDownRows ); " hat auch bestens funktioniert.
      <br>(Die Entwicklung mit dem Interbase ist nun um vieles angenehmer)
      <br>
      <br>Die Antwort zu dem Nachtrag werde ich mir zu Herzen nehmen.
      <br>
      <br>Ich kenne die IBO Komponenten nicht. Hat man bei der Umstellung von IBX auf IBO mit großen Problemen zu rechnen (wenn man in ein - zwei Jahren ggf. die Software umstellen will)?
      <br>
      <br>Danke!
      <br>mfg
      <br>p

      Comment


      • #4
        Hallo,

        auch bei IBO gibt es verschiedene Komponenten-Kategorien. Die "Kompatibilitätskomponenten" simulieren sehr gut das "alte" BDE-Verhalten, so dass ein Umstieg von der BDE sehr einfach wird. Die nativen IBO-Komponenten nutzen im Gegensatz dazu primär die Fähigkeiten des InterBase sehr gut aus, so dass die Umstellung nicht so einfach geht. <br>
        Allerdings sind 1..2 Jahre in unserer Branche ein extrem langer Zeitraum, Vorhersagen sind hier nicht sinnvoll :-)

        P.S: Ab der nächsten Ausgabe von DER ENTWICKLER beginnt eine Artikelserie, in der demonstriert wird, dass man auch größere Projekte mit IBX und InterBase 6 schreiben kann. Da mit IBX geschriebene Programme im Gegensatz zu IBO kostenfrei weitergegeben werden können, hat IBX aus dieser Sicht immer noch einen Vorteil gegenüber IBO.
        &#10

        Comment


        • #5
          <br>Danke!
          <br>
          <br>Dann liege ich ja erstmal mit IBX richtig.
          <br>
          <br>mfg
          <br>p

          Comment

          Working...
          X