AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Per ADO Dateien in Access importieren

Per ADO Dateien in Access importieren

Ein Thema von tomate007 · begonnen am 26. Jun 2007 · letzter Beitrag vom 5. Jul 2007
Antwort Antwort
tomate007

Registriert seit: 1. Apr 2007
46 Beiträge
 
#1

Per ADO Dateien in Access importieren

  Alt 26. Jun 2007, 11:30
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Hallo, ich hab da mal ein paar Fragen....

Und zwar bin ich gerade dabei ein Prog zu schreiben was CSV Dateien in eine leere MDB importiert.

Mein Problem ist das ich keine CSV's importiert bekomme

Habe mal gegoogelt und folgendes SQL-Statement für ASP mit ADO gefunden:

SQL-Code:
strSQL = "INSERT INTO " & strTableName & " SELECT * FROM [" & strCSVFileName
strSQL = strSQL & "] IN """ & strCSVPath & """ ""TEXT;"""
also hab ich es für Delphi umgeschrieben:

Delphi-Quellcode:

       ADOQuery1.SQL.Add('INSERT INTO TableTest SELECT * FROM [test.csv] IN "C:\test\" "TEXT;"');
aber es funktioniert nicht.
er schreibt folgende Fehlermeldung:
Oberator muss eine aktualisierbare Abfrage verwenden.

Ich versteh nur noch Bahnhof. Was ist falsch an dem SQL Statement, weil eigentlich müsste er doch in der MDB dann eine neue Tabelle mit dem Namen TableTest anlegen und dort die Daten der test.csv die sich in C:\test\ befindet importieren oder nicht?

Gibt es eine andere Möglichkeit schnell csv Dateien zu importieren?

Hier nochmal der ganze Code:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var table_vorhanden: boolean;
var i: integer;
begin
ADOConnection1.Connected := True;
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('INSERT INTO TableTest SELECT * FROM [test.csv] IN "C:\test\" "TEXT;"');
        ADOQuery1.Open;
end;


end.
Und hier mal der Connectionstring der ADOConnection1:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\RTS-Auswertungstool\RTS-Auswertungstool.mdb;Mode=Read;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False Hoffe ihr habt genug Infos mir zu helfen.

MFG
Andre
PS: Danke schonmal für die Hilfe
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Per ADO Dateien in Access importieren

  Alt 26. Jun 2007, 13:21
Hi

Zitat von tomate007:
Ich versteh nur noch Bahnhof. Was ist falsch an dem SQL Statement, weil eigentlich müsste er doch in der MDB dann eine neue Tabelle mit dem Namen TableTest anlegen und dort die Daten der test.csv die sich in C:\test\ befindet importieren oder nicht?
Die Tabelle musst du vorher selbst anlegen. INSERT INTO legt selbst keine Tabellen an.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
tomate007

Registriert seit: 1. Apr 2007
46 Beiträge
 
#3

Re: Per ADO Dateien in Access importieren

  Alt 26. Jun 2007, 13:42
Das ist alles?? warum kann Delphi mir nicht das als Fehlermeldung sagen ^^

EH Alter erst Tabelle anlegen dann gehts!!!



ja so dann hab ich mal ne folge Frage, gibt es denn irgendeinen befehl der Schaut welche Struktur die csv Datei hat und der dann die Tabelle anlegt?? oder darf ich jetzt schön nen SQL-Statement schreiben welches dann mit create table das anlegt?? weil es ganz schön viele sind ^^


Danke für deine Hilfe

Ach so



  Mit Zitat antworten Zitat
Joffm

Registriert seit: 25. Feb 2006
Ort: Rodgau
4 Beiträge
 
Delphi 7 Professional
 
#4

Re: Per ADO Dateien in Access importieren

  Alt 5. Jul 2007, 14:04
Hallo, Tomate,

Wenn INSERT, dann muss die Tabelle bereits existieren, da Du ja einfügst.
Wenn die Tabelle neu angelegt werden soll, muss es SELECT INTO heißen.
Dann darf sie aber auch nicht existieren.

Zu Deiner Frage:

Woran soll man in einer csv-Datei die Struktur kennen?
Da steht doch nur Text.
Wie also kann man ein Textfeld von einem Datumsfeld oder einem Zahlenfeld unterscheiden.

Du kannst allerdings, falls in der ersten Zeile die Feldnamen stehen, Dir ein kleines Tool schreiben, das die Feldnamen einliest - meinetwegen in ein Grid.
Dann wählst Du nacheinander die Feldnamen aus und klickst dir aus einer Radiogroup den entsprechenden Typ dazu.
Die Generierung der SQL überlässt Du dann dem Programm.

Joffm
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz