Announcement

Collapse
No announcement yet.

Abfrageergebnis in Tabelle kopieren

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

  • Abfrageergebnis in Tabelle kopieren

    Ich möchte die Daten aus einer Abfrage (TQuery) automatisch in eine Paradoxtabelle abspeichern.
    Beim nächsten Aufruf der Abfrage sollen die neuen
    Daten die alten in der Paradoxtabelle ersetzen.
    Hintergrund: die "temporäre" Tabelle benötige ich
    für den Datenzugriff von Reports (QuickReport) auf
    das Abfrageergebnis.
    Wer kann mir weiterhelfen?

    Klaus

  • #2
    Also in einer SQL-Zeile bekomm ich das nicht hin, hier aber 'ne Lösung:

    DELETE FROM ZielTabelle;

    INSERT INTO ZielTabelle(Felder, ...) SELECT Felder, ... FROM Ursprungstabelle

    Comment


    • #3
      Hallo,

      ich verwende zwar nicht Paradox- sondern DBISAM-Tabellen, aber die SQL-Syntax sollte gleich sein:

      <pre>
      select * into zieltabelle from quelltabelle
      </pre>

      Speichert das Ergebnis der Abfrage in die Quelltabelle, wobei diese angelegt bzw. überschrieben wird.

      Vorsicht: Bei DBISAM ist es so, dass auf die Zieltabelle erst dann zugegriffen werden kann, wenn die zu Grunde liegende Abfrage geschlossen wird.

      Gruß Ul

      Comment


      • #4
        Hallo,

        normalerweise kann man über die IDAPI-Funktion <b>DbiMakePermanent</b> das Ergebnis der SELECT-Abfrage direkt speichern:
        <pre>
        DbiMakePermanent(Query1.Handle, 'temp.db', True)
        </pre&gt

        Comment


        • #5
          Besten Dank für die Hilfestellung. Zugegebenermassen kenne ich mich bisher mit IDAPI-Funktionen nicht aus. Muss ich, bevor die Abfrage aus
          der SQL direkt geseichert werden kann eine functin, wie
          function DbiMakePermanent (hCursor: hDBICur; pszName: PChar;
          bOverwrite: Bool): DBIResult stdcall;
          voranstellen?
          Die Paradoxtabelle 'temp.db' ist bereits erstellt. Die Daten der Abfrage werden bisher jedoch nicht automatisch in die temporäre Tabelle übertragen. Was mache ich falsch?
          Gruß
          Klau

          Comment


          • #6
            Hallo,

            das folgende Beispiel demonstriert den Einsatz:
            <pre>
            unit Unit1;

            interface

            uses
            Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
            StdCtrls, Db, DBTables;

            type
            TForm1 = class(TForm)
            Query1: TQuery;
            Button1: TButton;
            procedure Button1Click(Sender: TObject);
            private
            { Private-Deklarationen }
            public
            { Public-Deklarationen }
            end;

            var
            Form1: TForm1;

            implementation

            {$R *.DFM}

            uses BDE;

            procedure TForm1.Button1Click(Sender: TObject);
            begin
            Query1.Active := True;
            DbiMakePermanent(Query1.Handle, 'C:\Temp\temp.db', True);
            Query1.Active := False;
            end;

            end.
            </pre&gt

            Comment


            • #7
              Vielen Dank, hat wunderbar funktioniert!!!!!
              Gruß
              Klau

              Comment


              • #8
                Vielen Dank, es hat jetzt wunderbar geklappt!!!
                Gruß
                Klau

                Comment


                • #9
                  @ Andreas:

                  Hallo bei mir funktioniert Dein Beispiel leider überhaupt nicht. Ich muß vielleicht dazu sagen, daß die Tabelle 'C:\Temp\temp.db' bei mir vor dem Aufruf der Funktion "DbiMakePermanent" nicht vorhanden ist. Aber dies ist doch auch nicht notwendig, oder?

                  Woran liegt das, daß auch nach Ausführen der Funktion die Tabelle nicht vorhanden ist? Es kommt auch keine Fehlermeldung.

                  Für Hilfe wäre ich wirklich dankbar.

                  Grüsse, Carste

                  Comment


                  • #10
                    So, habe es noch mal von klein auf mit einer Paradox-Tabelle gemacht. Das Beispiel klappt, da dort natürlich auf jeden Fall die BDE verwendet wird.

                    Bei der Query, wo es nicht geklappt hat, habe ich festgestellt, daß die Abfrage über einen SequeLink-Treiber auf einen DB2-Server geht. In der BDE-Verwaltung ist er allerdings eingetragen.

                    In der Hilfe zur Funktion "DbiMakePermanent" steht noch folgendes:
                    "SQL: This function is not supported by SQL drivers."

                    Kann mir das mal jemand erklären und sagen, wie ich das evtl. umgehen kann?

                    Grüsse, Carste

                    Comment

                    Working...
                    X