AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten von einer Datasource importieren

Daten von einer Datasource importieren

Ein Thema von MaxMara · begonnen am 23. Mai 2008 · letzter Beitrag vom 24. Mai 2008
Antwort Antwort
MaxMara

Registriert seit: 27. Apr 2004
Ort: Wien
77 Beiträge
 
Delphi 2007 Enterprise
 
#1

Daten von einer Datasource importieren

  Alt 23. Mai 2008, 21:41
Datenbank: MySQL • Version: 5 • Zugriff über: ZeosLib
Guten Abend!

Ich grüble schon länger über folgendes Problem:
Über eine ADOConnection und ADOQuery fülle ich eine Datasource mit Daten aus einer Excel-Datei.
Diese Daten will ich in eine MySQL-DB schreiben.
Habe schon im Netz gesucht, aber nur sündteure Komponenten dafür entdeckt, die viel zu viel können.

Weiss jemand von euch eine halbwegs simple Lösung für mein Problem?

Danke und Grüße
Christian

EDIT: Den Beitrag ms+access+ado+einfuegen+mehrerer+datensaetze.html habe ich gelesen. Ist aber glaub ich bei mir ein wenig anders. Zumindest hoffe ich das
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Daten von einer Datasource importieren

  Alt 23. Mai 2008, 22:52
Also auf http://dev.mysql.com/downloads/conne...5.1.html#win32 gibt es kostenlose ODBC-Treiber und ich hab auch schon OLE-DB Provider (=direkte Treiber für ADO) gesehen.
meine Empfehlung: ODBC-Treiber runterladen einen System-DSN in der Systemsteuerung (bzw. Verwaltung) -> ODBC Datenquellen einrichten.
Dann eine ADO-Connection (Microsoft OLE-DB Provider for ODBC Drivers) einrichten und den Namen der System-DSN auswählen.
In deinem Programm hat du dann eine ADO-Connection zu Excel und eine ADO-Connection zu MySQL (unter Verwendung des ODBC-Treibers).
Eine ADOQuery geht auf das Excel Worksheet, die andere Query geht auf eine MySQL Tabelle - na ja, und dann einfach die Daten umschaufeln.
  Mit Zitat antworten Zitat
MaxMara

Registriert seit: 27. Apr 2004
Ort: Wien
77 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Daten von einer Datasource importieren

  Alt 23. Mai 2008, 23:02
Zitat von sx2008:
Eine ADOQuery geht auf das Excel Worksheet, die andere Query geht auf eine MySQL Tabelle - na ja, und dann einfach die Daten umschaufeln.
...einfach?
Wie geht das? Das ist genau mein Problem
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Daten von einer Datasource importieren

  Alt 23. Mai 2008, 23:05
ADO unterstützt Cross-DB Queries
Markus Kinzler
  Mit Zitat antworten Zitat
MaxMara

Registriert seit: 27. Apr 2004
Ort: Wien
77 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Daten von einer Datasource importieren

  Alt 23. Mai 2008, 23:17
Zitat von mkinzler:
ADO unterstützt Cross-DB Queries
Hilft mir jetzt auch nicht viel weiter. Vielleicht bin ich ja schon zu müde, aber nicht mal mit Google finde ich halbwegs sinnvolle Ergebnisse...
Ich glaub ich schlaf mal darüber
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Daten von einer Datasource importieren

  Alt 23. Mai 2008, 23:27
Delphi-Quellcode:
rc := 1; // integer Zähler
QrySource.Open; // Excel Daten
QryDst.Open; // MySQL-Tabelle
while not QrySource.Eof do
begin
  QryDst.Append; // neuer, leerer Datensatz
  QryDst['IdAdresse'] := rc; // Primärschlüssel
  QryDst['Name'] := QrySource.Fields[0].Value; // Feld kopieren
  QryDst['EMail'] := QrySource.Fields[1].Value;
  ...
  QryDst.Post; // Daten abschicken
  QrySource.Next; // nächste Excel Reihe
  Inc(rc);
end;
  Mit Zitat antworten Zitat
MaxMara

Registriert seit: 27. Apr 2004
Ort: Wien
77 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Daten von einer Datasource importieren

  Alt 24. Mai 2008, 09:54
Danke sx2008!
Das verschafft mir Klarheit
Hab es jetzt mal so gemacht, da ich ja eine TZConnection zu MySQL habe und die ADOConnection zu Excel:
Delphi-Quellcode:
  ZQuery1.Open; // MySQL-Tabelle
  while not ADOQuery1.Eof do
  begin
    ZQuery1.Append; // neuer, leerer Datensatz
    ZQuery1.FieldByName('content_nr').AsString := ADOQuery1.Fields[0].Value; // Feld kopieren
    ZQuery1.FieldByName('content_sprache').AsString := ADOQuery1.Fields[1].Value;
    ZQuery1.FieldByName('content_text').AsString := ADOQuery1.Fields[2].Value;
    ZQuery1.FieldByName('content_datetime').AsString := 'now()';
    ZQuery1.Post; // Daten abschicken
    ADOQuery1.Next; // nächste Excel Reihe
  end;
Das Problem jetzt ist: Er meint immer SQL-Query wäre leer...

Eine zusätzliches Problem kommt noch dazu:
im MySQL-Table können schon Daten drin sein, die in der Excel-Datei auch stehen.
Leider gibt es in der DB keinen unique-key, da 2 Felder gemeinsam sozusagen unique sein müssen.
In meinem Fall wäre das die 'content_nr' zusammen mit 'content_sprache'. Wenn in der Exceltabelle die gleiche Kombination vorkommt, dann soll dieser Datensatz übersprungen werden.
Fragt man das am besten über IF..THEN ab, oder geht das eleganter?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Daten von einer Datasource importieren

  Alt 24. Mai 2008, 11:00
Du öffnest die MySQL-Abfrage und fragst dann Excel ab?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MaxMara

Registriert seit: 27. Apr 2004
Ort: Wien
77 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Daten von einer Datasource importieren

  Alt 24. Mai 2008, 11:17
Zitat von DeddyH:
Du öffnest die MySQL-Abfrage und fragst dann Excel ab?
Ne. Sorry. Copy/Paste hat mir die erste Zeile geschluckt...
AdoQuery1.Open; Habe es analog zum Beispiel von sx2008 gemacht.
  Mit Zitat antworten Zitat
MaxMara

Registriert seit: 27. Apr 2004
Ort: Wien
77 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Daten von einer Datasource importieren

  Alt 24. Mai 2008, 12:22
Hmm...habe es jetzt mit einem ZTable statt dem ZQuery versucht. Es funktioniert jetzt, aber warum das mit dem ZQuery nicht funktioniert ist mir trotzdem ein Rätsel.

Danke an euch.

Grüße
Christian
  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 16:48 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