Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Inhald eines DBGrid nach Excel exportieren ?

  Alt 18. Jun 2006, 17:52
Hallo Vader,

Zitat von Vader:
mit der ersten variante komme ich nicht klar, da fehlt mir der durchblick
ok, aber funktioniert sie?

Zitat von Vader:
mit der zweiten variante, da sollte MSQuery installiert sein, da weiß ich auch nicht weiter
Wie sieht den dein SQL-Statement aus? Du kannst auch einfach mal Excel öffnen und über Daten->Externe Daten->Neue Abfrage erstellen mal ausprobieren ob Excel das ohne Delphifernsteuerung hinbekommt.
Da du ja mit der BDE arbeitest, bin ich davon ausgegangen, dass du auch eine TDatabase-Komponente benutzt. Dort gibst du ja auch einen ODBC-Namen an. Diesen benötigt auch Excel.
Also Neue Abfrage erstellen, dann geht die MSQuery auf und du kannst dort dann deinen ODBC-Alias auswählen. Danach werden dir die Tabellen angezeigt. Wähle einfach mal eine aus, füge sie hinzu und geh auf schliessen. Dann ziehst du den * ins untere Grid und siehst den Inhalt der Tabelle. Über Daten->Daten an Excel zurückgeben werden die Daten an Excel übergeben. Dies ist nur ein Test und zeigt dir schonmal, wie man das normalerweise macht. Wenn das alles soweit geht, dann sollte auch die Fernsteuerung des Ganzen eigentlich gehen.

Zitat von Vader:
funktioniert bei dir die dritte variante mit meinen aufruf der prozedure?
Ja, bei mir geht diese Variante wunderbar. Und natürlich haben hier einige Recht, dass man das Grid nur als Anzeige nehmen soll. Genau das passiert hier ja auch. Über das Grid kommt man an das Dataset, das dahinter liegt. Dieses Dataset wird ausgelesen. Diese Variante habe ich nur geschrieben, weil es genau deiner Frage entsprach. In dieser Variante werden die Zellen selber nach Excel geschrieben. Das das langsam ist ist schon klar, nur wenn man nicht vorraussetzen kann/oder will, dass die MSQuery installiert ist, muss man es halt selber reinschreiben. CSV-Import ist ja ganz nett, nur kann man dann keine Formatierungen anwenden.


Zitat von omata:
Zitat von Vader:
muß ich bei den codezeilen an mein projekt anpassen?
User:='ich';
ODBCname:='LocalServer';
Database:='MeineDatenbank';
Query.CommandText:='SELECT * FROM tabelle';
Query.Name:= 'Meine Abfrage von LocalServer';
Ja must du. Ich dachte das wäre erkennbar, sorry.
Also User ist der User in der Datenbank (Berechtigungen), ODBCname ist dein ODBC-Alias, der zu der Datenbank führt. Database ist der Name deiner Datenbank. Query.CommandText muss die SQL-Abfrage enthalten, das ist die die auch dein DBGrid mit Inhalt füllt. Query.Name ist unwichtig, nur eine Spielerei. Ich sehe gerade das ich nicht an ein Passwort gedacht habe. Ist deine Datenbank mit einem Passwort gesichert? Wenn ja, muss einfach noch Password=??? hinter den User im Connection-String.

Ich musste gerade feststellen, dass das bei mir so auch nicht geht. Ich bekomme als eingeschrängter Benutzer auch einen allgemeinen ODBC-Fehler. Also probiere es mal als Administrator. Das ist dann allerdings keine schöne Lösung. Da wäre wohl eine ordentliche Datenbank sinnvoller...

@mkinzler: mein Vorschlag arbeitet nicht mit ADO-Komponenten.

MfG
Thorsten
  Mit Zitat antworten Zitat