Announcement

Collapse
No announcement yet.

Aus einer ADOQuery eine Tabelle erstellen

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

  • Aus einer ADOQuery eine Tabelle erstellen

    Hallo Leute,

    ich habe folgendes Problem:
    Ich habe in einer ADOQuery ein Resultset.
    Aus diesem Resultset möchte eine ganz neue
    Tabelle (inkl. Daten) in einer Accessdatenbank erstellen (auch über ADO).

    Gibt es eine Möglichkeit das mit wenig Aufwand
    zu kodieren ?

    Gruß
    Mike

  • #2
    Du könntest das SQL umstellen:<p>
    <pre>Insert Into TableName
    Select * From ...</pre><p>
    Das sollte eigentlich tun. Falls nicht, kann ich morgen noch mal nach dem Syntax für Ado schauen, ich habe das jetzt auf eine BDE-SQL rausgeschrieben.<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Hallo,

      das folgende Beispiel aus meinem Buch <i>ADO und Delphi</i> demonstriert die Export- und Import-Fähigkeiten der MS JET Engine:
      <pre>
      <font color="#003399"><i>{ ************************************************** **************
      Autor : Andreas Kosch
      Compiler : Delphi 6.01 Enterprise / Delphi 6.01 Enterprise
      Betriebssystem : Windows 2000 / Windows XP Professional
      Erstellt am : 18.09.2000 / 09.12.2001
      Beschreibung : Import- und Exportfähigkeiten der
      Microsoft Jet Engine
      ************************************************** ************** }</i></font>

      <b>unit</b> ExportImportFrm;

      <b>interface</b>

      <b>uses</b>
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, ADODB, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids;

      <b>type</b>
      TForm1 = <b>class</b>(TForm)
      StatusBar1: TStatusBar;
      RadioGroupExport: TRadioGroup;
      ButtonExport: TButton;
      ButtonImport: TButton;
      ADOConnection1: TADOConnection;
      DBGrid1: TDBGrid;
      ADOConnImport: TADOConnection;
      ADOTableImport: TADOTable;
      DataSourceImport: TDataSource;
      <b>procedure</b> ButtonExportClick(Sender: TObject);
      <b>procedure</b> ButtonImportClick(Sender: TObject);
      <b>private</b>
      <font color="#003399"><i>{ Private-Deklarationen }</i></font>
      <b>public</b>
      <font color="#003399"><i>{ Public-Deklarationen }</i></font>
      <b>end</b>;

      <b>var</b>
      Form1: TForm1;

      <b>implementation</b>

      <font color="#003399"><i>{$R *.DFM}</i></font>

      <b>procedure</b> TForm1.ButtonExportClick(Sender: TObject);
      <b>resourcestring</b>
      cSQL1 = <font color="#9933CC">'SELECT * INTO [Export.%s] IN &quot;C:\Temp&quot; &quot;%s;&quot; FROM Customer'</font>;
      cSQL2 = <font color="#9933CC">'SELECT * INTO %s IN &quot;C:\Temp\%s&quot; &quot;Excel 8.0;&quot; FROM Customer'</font>;
      cSQL3 = <font color="#9933CC">'SELECT * INTO [%s] IN &quot;C:\Temp\%s&quot; FROM Customer'</font>;
      <b>var</b>
      sSQL : <b>String</b>;
      iRows: Integer;
      <b>begin</b>
      <b>case</b> RadioGroupExport.ItemIndex <b>of</b>
      0 : sSQL := Format(cSQL1, [<font color="#9933CC">'dbf'</font>, <font color="#9933CC">'dBASE 5.0'</font>]);
      1 : sSQL := Format(cSQL1, [<font color="#9933CC">'db'</font>, <font color="#9933CC">'Paradox 5.x'</font>]);
      2 : sSQL := Format(cSQL1, [<font color="#9933CC">'htm'</font>, <font color="#9933CC">'HTML Export'</font>]);
      3 : sSQL := Format(cSQL1, [<font color="#9933CC">'txt'</font>, <font color="#9933CC">'Text'</font>]);
      4 : sSQL := Format(cSQL2, [<font color="#9933CC">'Tabelle1'</font>, <font color="#9933CC">'Export.xls'</font>]);
      5 : sSQL := Format(cSQL3, [<font color="#9933CC">'Cust'</font>, <font color="#9933CC">'Export.MDB'</font>]);
      <b>end</b>;
      StatusBar1.Panels[0].Text := sSQL;
      ADOConnection1.Connected := True;
      ADOConnection1.Execute(sSQL, iRows);
      ADOConnection1.Connected := False;
      StatusBar1.Panels[1].Text := IntToStr(iRows);
      ShowMessage(Format(<font color="#9933CC">'Es wurden %d Datensätze exportiert.'</font>, [iRows]));
      <b>end</b>;

      <b>procedure</b> TForm1.ButtonImportClick(Sender: TObject);
      <b>begin</b>
      ADOTableImport.Active := False;
      ADOConnImport.Connected := False;
      ADOConnImport.Provider := <font color="#9933CC">'Microsoft.Jet.OLEDB.4.0'</font>;
      <b>case</b> RadioGroupExport.ItemIndex <b>of</b>
      0 : <b>begin</b>
      ADOConnImport.Properties[<font color="#9933CC">'Extended Properties'</font>].Value := <font color="#9933CC">'dBASE 5.0'</font>;
      ADOConnImport.Properties[<font color="#9933CC">'Data Source'</font>].Value := <font color="#9933CC">'C:\Temp'</font>;
      ADOTableImport.TableName := <font color="#9933CC">'Export'</font>;
      <b>end</b>;
      1 : <b>begin</b>
      ADOConnImport.Properties[<font color="#9933CC">'Extended Properties'</font>].Value := <font color="#9933CC">'Paradox 5.x'</font>;
      ADOConnImport.Properties[<font color="#9933CC">'Data Source'</font>].Value := <font color="#9933CC">'C:\Temp'</font>;
      ADOTableImport.TableName := <font color="#9933CC">'Export'</font>;
      <b>end</b>;
      2 : <b>begin</b>
      ADOConnImport.Properties[<font color="#9933CC">'Extended Properties'</font>].Value := <font color="#9933CC">'HTML Import'</font>;
      ADOConnImport.Properties[<font color="#9933CC">'Data Source'</font>].Value := <font color="#9933CC">'C:\Temp\Export.htm'</font>;
      ADOTableImport.TableName := <font color="#9933CC">'Export'</font>;
      <b>end</b>;
      3 : <b>begin</b>
      ADOConnImport.Properties[<font color="#9933CC">'Extended Properties'</font>].Value := <font color="#9933CC">'Text'</font>;
      ADOConnImport.Properties[<font color="#9933CC">'Data Source'</font>].Value := <font color="#9933CC">'C:\Temp'</font>;
      ADOTableImport.TableName := <font color="#9933CC">'Export.txt'</font>;
      <b>end</b>;
      4 : <b>begin</b>
      ADOConnImport.Properties[<font color="#9933CC">'Extended Properties'</font>].Value := <font color="#9933CC">'Excel 8.0'</font>;
      ADOConnImport.Properties[<font color="#9933CC">'Data Source'</font>].Value := <font color="#9933CC">'C:\Temp\Export.xls'</font>;
      ADOTableImport.TableName := <font color="#9933CC">'Tabelle1'</font>;
      <b>end</b>;
      5 : <b>begin</b>
      ADOConnImport.Properties[<font color="#9933CC">'Data Source'</font>].Value := <font color="#9933CC">'C:\Temp\Export.mdb'</font>;
      ADOTableImport.TableName := <font color="#9933CC">'Cust'</font>;
      <b>end</b>;
      <b>end</b>;
      ADOConnImport.Connected := True;
      ADOTableImport.Active := True;
      <b>end</b>;

      <b>end</b>.
      </pre&gt

      Comment


      • #4
        Hallo,
        besonders interessant finde ich folgenden Abschnitt<pre>ADOConnImport.Properties['Extended Properties'].Value := 'Text';
        ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
        ADOTableImport.TableName := 'Export.txt';
        </pre>
        Gibt es auch die Möglichkeit explizit anzugeben, welches Zeichen die einzelnen Felder trennt und welches als Texterkennungszeichen verwendet werden soll

        Comment


        • #5
          Hallo,
          ich möchte meine oben gestellte Fragen hier noch einmal stellen

          Comment


          • #6
            Hallo
            Das Beispiel funktioniert mit den im Buch angegebenen mdb´s, ich bekomme aber keinen Export aus MS SQL 2000 hin, entweder eine Fehlermeldung :Falsche Syntax in der Nähe des Schlüsselwortes "IN" oder bei Excelexport und der Syntax von http://support.microsoft.com/kb/295646/DE/
            das ich keine Berechtigung habe ...
            Hat da jemand ein Tip?
            mfg Jör

            Comment


            • #7
              Hallo
              Ich habe ein ähnliches Problem.

              Das Beispiel funktioniert mit den im Buch angegebenen mdb´s, ich bekomme aber keinen Export aus MS SQL 2000 hin, entweder eine Fehlermeldung :Falsche Syntax in der Nähe des Schlüsselwortes "IN" oder bei Excelexport und der Syntax von http://support.microsoft.com/kb/295646/DE/
              das ich keine Berechtigung habe ...
              Hat da jemand ein Tip?
              (Delphi 2005 Developer dbgo mssql2000)
              mfg Jör

              Comment


              • #8
                Hallo,

                die IN-Syntax der SQL-Anweisung kann nur von der Microsoft JET Engine (OLE DB-Provider <i>Microsoft.Jet.OLEDB.4.0</i>) verarbeitet werden. Die Export-/Import-Fähigkeiten in die verschiedenen Formate steht somit nur dann zur Verfügung, wenn die JET-Engine den Ausgangspunkt der Abfrage bildet

                Comment

                Working...
                X