Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Excel-Sheet in Datenbank Überführen (https://www.delphipraxis.net/35230-excel-sheet-datenbank-ueberfuehren.html)

allarich 4. Dez 2004 09:11


Excel-Sheet in Datenbank Überführen
 
Hallo Forumsmitglieder,
habe ein Problem, benötige Hilfe.
Habe die Ergebnisse einer umfangreichen rechnerischen Auswertung in einem Excel-Sheet abgespeichert. Ich möchte nun die Ergebnisse mittels Quickreport ausgeben, was nicht funktioniert (ich bekomme keine Verbindung zu den Daten zustande).
Test mit einer Datenbank funktionieren problemlos. Was kann ich tun ? Wer kann helfen ?

MfG
allarich

mikhal 4. Dez 2004 09:18

Re: Excel-Sheet in Datenbank Überführen
 
Verwende ADO als Zugriffsschicht für deine Excel-Tabelle, dann kannst du den Quickreport wie gewohnt einsetzen.

Schau dir dazu mal diesen Thread an, der zeigt dir, wie du via ADO auf eine Excel-Tabelle zugreifen kannst.

Grüße
Mikhal

Detlef 4. Dez 2004 15:16

Re: Excel-Sheet in Datenbank Überführen
 
Hallo Mikhal,
der Tip ist sehr gut, aber das funktioniert nicht auf allen Rechnern in unserem Netz. Bei einigen Rechnern werden Werte in Text erkannt, bei anderen aber weggelassen.
Wo gibt es da noch rechnerspezifische Einstellungen?

Mit freundlichen Grüßen
Detlef

mikhal 4. Dez 2004 16:19

Re: Excel-Sheet in Datenbank Überführen
 
Ist auf allen Rechnern die aktuellste Version der MS Jet installiert? Es kann sein, daß eine veraltete Version nicht alles ausgeben kann, was neuere Excel-Sheets zu bieten haben. Zusätzlich sollte überprüft werden, ob auf allen Rechnern die gleiche (nach Möglichkeit die aktuellste) Version der MDAC (Microsoft Data Access Components) installiert ist.

Quellen für die Jet und die MDAC findest du z.B. auf meiner Homepage unter Download/DBMS.

Grüße
Mikhal

Detlef 5. Dez 2004 11:01

Re: Excel-Sheet in Datenbank Überführen
 
Vielen Dank, das war es!

herzliche Grüße von Detlef

allarich 7. Dez 2004 08:00

Re: Excel-Sheet in Datenbank Überführen
 
Hallo mikhal,

danke für Deinen Tip,habe die Verbindung zwischen Excel und Quickreport generell herstellen können(Test erfolgrech verlaufen;ADOConnectionstring). Ich benötige nun aber die Daten aus Tabelle2. Wie kann ich das realisieren ?

MfG
allarich

mikhal 7. Dez 2004 10:48

Re: Excel-Sheet in Datenbank Überführen
 
Wenn du eine ADOConnection verwendest, in die du den Connectionstring einsetzt, kannst du die Methoden GetTableNames und GetFieldNames verwenden, die dir die Namen der vorhandenen Tabellen (bei Excel die Arbeitsblätter) sowie die dazu gehörenden Feldnamen (Spalten) ausgeben.

Der Code-Schnipsel geht davon aus, daß eine AdoConnection conExcel exisitert, in der der gültige ConnectionString eingefügt wurde.

Code:
var
  slTabellen, slFelder: TStringList; // Stringliste zur Aufnahme der Tabellen- bzw. Feldnamen
  sConnectionString: String; // Der ConnectionString
  sTabelle: String;
...
  conExcel.Connected := False;
  conExcel.ConnectionString := sConnectionString;
  conExcel.Connected := True;

  slTabellen := TStringList.Create;
  try
    conExcel.GetTableNames(slTabellen);
  ...
    sTabelle := slTabellen[<Index>];
  ...
    slFelder := TStringList.Create;
    try
      conExcel.GetFieldNames(sTabelle, slFelder); // alle Felder der Tabelle laden
  ...

    finally
      slFelder.Free;
    end;
    ...
  finally
    slTabellen.Free;
  end;
...
Grüße
Mikhal

allarich 15. Dez 2004 09:38

Re: Excel-Sheet in Datenbank Überführen
 
Hallo mikal,
danke für Deinen Hinweis.
Leider ist dies für mich nicht konkret genug,so daß ich immer wieder scheitere.
Wo ist der Quellcode einzufügen ?
Wie ist conexel def ?
Sind irgend welche Komponenten auf welchen Forms zu plazieren ?
Für eine Antwort wäre ich sehr dankbar!

MfG
allarich

mikhal 15. Dez 2004 10:31

Re: Excel-Sheet in Datenbank Überführen
 
Du hast witer oben geschrieben, daß der ADOConnectionString erfolgreich war, deshalb gehe ich davon aus, daß die ADO-Komponenten besitzt. Zu diesen ADO-Komponenten gehört auch die Komponente TADOConnection. Dieser ADOConnection kannst du den AdoConnectionString übergeben, benennst sie in conExcel um und dann stehen dir u.a. die Methoden GetTableNames und GetFieldNames zur Verfügung.

In dem Code-Schnipsel wird in der Stringliste slTabellennamen die vorhandenen Tabellennamen und in der Stringliste slFeldnamen die zur ausgewählten Tabelle vorhandenen Felnamen aufgenommen. Diese Stringlisten kannst du dir recht einfach in einem Memo-Feld anzeigen lassen (z.B. Memo1.Lines.Assign(slTabellennamen) für die Tabellennamen), um die entsprechenden Namen zu ermitteln. Beachte bitte, daß Excel bei den Tabellenamen immer ein Dollarzeichen an den Namen des Arbeitsblatts anhängt, und du dann bei einem Select-Statement den Tabellennamen in eckige Klammern setzen mußt.

Grüße
Mikhal


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