Announcement

Collapse
No announcement yet.

query aktualisieren

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

  • query aktualisieren

    tagchen,

    damit ich das ergebnis einer schreibgeschützten query editieren kann,
    leite ich sie in eine ttable um. wenn ich mich jetzt in ttable einen
    datensatz vor oder zurückbewege wird das in der query synchronisiert!!
    wenn ich jetzt aber einen datensatz lösche, muß ich die query schließen
    und wieder öffnen zum aktualisieren und dann sollte der datensatzcursor
    da hin wo der datensatz gelöscht wurde, aber wie???

    mfg

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    aus welchem Grund soll bei einer <b>Paradox</b>-Datenbank eine updatefähige <b>TQuery</b>-Abrage verwendet werden? Paradox als Desktop-Datenbank "kennt" kein SQL, so das die BDE alle SQL-Anweisungen wieder rückübersetzen muss (daher auch die Einschränkungen). Bei den Desktop-Datenbanken sind Datenmengen, die editierbar sein müssen, besser bei TTable aufgehoben. Nur Abfragen mehrerer Tabellen (JOIN) sind datenbankunabhängig in jedem Fall etwas für TQuery

    Comment


    • #3
      antwort siehe andere frage????

      mfg

      marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Hi Markus,

        ich glaube, Andreas meint, daß TQuery als editierbare Datenmenge in Paradox aus den genannten Gründen gar keinen rechten Sinn macht.

        Warum machst Du das so umständlich und arbeitest nicht mit einer reinen TTable-Komponente, darin kann man auch filtern, sortieren, alles was man braucht??

        Gruß Ka

        Comment


        • #5
          tag kai,

          ich finde eine query viel flexibler wie eine ttable. sag mir doch mal wie ich mit einer ttable in 4
          verschiedenen feldern was suche(also in kombination) und das ergebnis nach einer bestimmten
          spalte sortieren lasse!!! wenn du das hinbekommst, dann überlege ich mir es ernsthaft.
          abder mit sql ist das alles sehr einfach!!!!

          mfg

          marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Ja Markus,

            da hast Du natürlich Recht, aber wenn ich sehe, welche Klimmzüge Du jetzt schon machst, um das mit SQL hinzubekommen (synchronisierte Abfrage, etc.), solltest Du Dir doch mal TTable genauer ansehen.

            Ich denke für Arbeit in einer lebendigen Datenmenge einer Desktop-Datenbank ist es die beste Wahl (manchmal sogar für SQL-Datenbanken).

            Und es sollte auch möglich sein, im Filter Bedingungen für mehrere Tabellenspalten zu setzen (Hab's aber selber noch nicht gebraucht, weil C/S-Programmierer :-) ).

            Auch eine Sortierung geht einfach, wenn Du einen entsprechenden Index auf der Tabelle hast. Der muß dann nur in TTable angegeben werden - fertig.

            So genial SQL auch ist - wenn es um Interaktion mit dem User-Interface geht, ist TTable oft eine gute Wahl.

            Gruß Ka

            Comment


            • #7
              tag kai,

              also ich schaue mir ttable nochmal an, aber z. b. mein bau-abrechnungsprogramm wurde in delphi 1.03
              programmiert und da fand ich die möglichkeiten sehr beschränkt und das mit dem index ist auch nicht
              so einfach wie du es hier darstellst. wenn du einen hauptindex hast(typ zähler) und du willst dann in einem
              normalen indezierten feld suchen(bsp. alphanummerisch) nach <b>mehreren</b> datensätzen, daß
              habe ich noch nicht hinbekommen!!!! mit ttable und delphi 2 muß ich mich noch beschäftigen, kann sein
              da geht es einfacher, aber ich habe große zweifel, daß ich das was ich mit tquery <b>leicht</b> geschafft habe,
              mit ttable auch hinbekomme!!!!

              angenommen ich habe eine materialtabelle mit einem feld nr(typ zähler)
              einem feld auftrag(alphanummerisch), einem feld datum.

              jetzt mach mir mal ein beispiel mit ich nach einem bestimmten auftrag
              in einem bestimmten <b>zeitraum</b> suchen lassen kann.

              mfg

              marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Hallo Markus,

                ich habe auf mehrere Deiner Fragen die gleiche Antwort abgeschickt, weil alle diese zu lösenden Probleme eine gemeinsame Ursache haben. Und zwar geht es um die prinzipiellen Unterschiede der <b>datensatzorientierten</b> (Paradox) gegenüber der <b>mengenorientierten</b> (SQL) Datenverarbeitung. Nicht ohne Grund verwenden die meisten SQL-Datenbankanwendungen das folgende Modell: <br>
                a) TQuery ermittelt eine Auswahlliste (READ ONLY), die im DBGrid angezeigt wird (gesondertes Auswahlformular). <br>
                b) Der Anwender wählt einen Datensatz aus - die TQuery-Abfrage wird geschlossen. <br>
                c) Der ausgewählte Datensatz wird als <b>einzelner</b> Datensatz zur Bearbeitung angezeigt, geändert und gespeichert.

                Da im Fall c) nur ein Datensatz bearbeitet wird, muss die TQuery nach dem Neuöffnen auch nicht positioniert werden (es wird ja im Bearbeitenmodus immer nur ein Datensatz angezeigt).

                Wenn Du ohne unnötigen Mehraufwand TQuery einsetzen willst, solltest Du auf dieses Modell wechseln. Ansonsten kennt auch TTable von Delphi 1 die Methode <b>SetRange</b>, um einen Bereich (zum Beispiel einen Zeitraum) zu definieren

                Comment


                • #9
                  guten tag herr kosch,

                  wenn ich Sie richtig verstanden habe wird zum bearbeiten ein extra fenster geöffnet.
                  dies halte ich für etwas mühevoll für den anwender!!!
                  ich habe ein grid, da wird das ergebnis der query angezeigt.
                  unter dem grid sind editierfelder. sie sind mit einer ttable gekoppelt. in der datasource-
                  komponente vom grid wird folgender code ausgeführt:

                  procedure TAngebotF.AngebotSource1DataChange(Sender: TObject;<br>
                  Field: TField);<br>
                  begin<br>
                  table1.findkey([Angebotquery.Fieldbyname('nr').AsInteger]);<br>
                  end;<br>

                  man kann also auch immer bloß <b>einen</b> datensatz editieren, aber der anwender muß eben nicht immer zum bearbeiten ein neues fenster öffnen. der nachteil ist halt, daß wenn was geändert wurde oder
                  ein datensatz hinzugefügt wurde muß die query geschlossen und wieder neu geöffnet werden, da ein <b>refresh</b> bei einer query versagt.

                  lassen sich mit setrange auch <b>kombinationen</b> durchführen??? (Auftrag und zeitraum und das ergebnis
                  nach datum sortiert). das habe ich bisher nicht geschafft.

                  mfg

                  marku
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment


                  • #10
                    Hallo Markus,

                    bei wird wird nur zum Suchen (DBGrid-Darstellung) ein eigenes Formular als modaler Dialog geöffnet. Die Bearbeitung findet in dem Hauptfenster der Anwendung statt. Der Vorteil dabei ist der, das bei jedem Aufruf des DBGrid-Suchformulars die Abfrage problemlos <b>neu</b> gestartet werden kann

                    Comment


                    • #11
                      Hallo Markus,

                      selbst SAP& Co arbeiten genau so wie es Andreas beschrieben hat. Schau Dir den Aktienkurs von SAP mal an... :-)

                      Gruß Kai

                      Comment


                      • #12
                        ist genehmigt, jetzt habe ich es kapiert!!!!!!!!!!!

                        mfg

                        marku
                        Herzliche Grüße

                        Markus Lemcke
                        barrierefreies Webdesign

                        Comment

                        Working...
                        X