De la dbgrid la excel

De la DBGrid la Excel.

Spuneți-mi, vă rog, începătorului: cum pot fi introduse informațiile din DBGrid în Excel? (în DBGrid trag din tabele SQL).







consultați fila Componentă servere
iar în setul de date treceți prin înregistrări și transmiteți către serverul selectat, luând în considerare formatarea

În general, MS Excel poate încărca aproape orice fișier, adică de exemplu are * .csv, în care delimitatorul coloanei este ";", iar fișierul în sine nu este altceva decât un fișier text obișnuit. De exemplu
Nume de familie, prenume, Patronimic
Ivanov, Ivan, Ivanovici
.

astfel Este necesar să treceți peste toate grilajele și să salvați într-un fișier cu extensie * .csv, câmpurile separând astfel cu punct și virgulă.

În plus, puteți încărca fișierele cu un alt caracter ca separator, în Excel însăși există un mod care vă permite să selectați un separator și puteți încărca și fișiere care indică lățimea stlobtsa.

procedura TForm1.btnExportClick (expeditor: TObject);
var

XL, // aplicație Excel
TableVals. varianta; # xA0;
i, LineCounter, # xA0;
queSelectRecCount,
queSelectFieldsCount. integer;
începe

cu queSelect do
începe
SQL.Assign (memSelect.Lines);
DatabaseName: = edtDatabaseName.Text;
Deschideți;

queSelectRecCount: = RecordCount;
queSelectFieldsCount: = FieldCount;
TableVals: = VarArrayCreate ([0, queSelectRecCount-1,
0, queSelectFieldsCount-1], varOleStr);

În primul rând;
LineCounter: = 0;
în timp ce nu face EOF
începe
pentru i: = 0 pentru queSelectFieldsCount-1
dacă nu în câmpuri [i] .Intre atunci
TableVals [LineCounter, i]: = Câmpuri [i] .AsString
altfel
TableVals [LineCounter, i]: = "";
LineCounter: = LineCounter + 1;
În continuare;
se încheie;
Închide;
se încheie;

încerca
încerca
XL: = GetActiveOleObject ("Excel.Application");
cu excepția
XL: = CreateOleObject ("Excel.Application");
se încheie;
cu excepția
ridicați Exception.Create ("Nu se poate porni Excel");
se încheie;

XL.Visible: = adevărat;
XL.Workbooks.Add;
XL.Range [XL.Cells [1,1],
XL.Cells [queSelectRecCount,
queSelectFieldsCount]] Valoare: = TableVals;
XL.Range [XL.Cells [1,1],
XL.Cells [queSelectRecCount,
queSelectFieldsCount]] Borders.Weight: = 2;
în cele din urmă
Screen.Cursor: = crDefault;
se încheie;
se încheie;

Dell3r, a decis să vă utilizeze codul.
Există un mic amendament și câteva întrebări.
1) Înainte de "finală" se termină un END care se închide Cu.

2) După cum am înțeles, queSelect este o componentă a TQuery.
Un "memSelect.Lines" este o componentă a TMemo? (Sau am înțeles greșit și nu înțeleg de ce este folosită această linie)
3) Folosesc ADO, în această privință, o altă întrebare:
"DatabaseName: = edtDatabaseName.Text;". În ADOQuery, nu există nici o proprietate "DataBaseName". Înțeleg că "edtDatabaseName" este o componentă a "TEdit". Tocmai am șters această linie. )
4) Cererea a început bine. Când sa executat acest cod, a apărut o eroare: "Proiectul Vibor.exe a ridicat clasa de excepție EoleException cu mesajul" Nu s-a găsit procedura memorată MemSelect "Process stopped ..."
Se pare că dacă traduceți în limba rusă, nu găsiți procedura MemSelect memorată. Dar nu ați scris nimic despre procedurile stocate. Sau din nou nu am înțeles nimic. )

ps Ajutați-vă să înțelegeți.

de ce alegeți întotdeauna cea mai dificilă distanță de frânare? (întrebare retorică)
De ce aveți nevoie de o rețea? de ce nu descărcați din baza de date? e mai ușor și mai repede, de ce mai întâi să te întorci acolo?






de exemplu (baza de date nu este specificată, dar, de exemplu, baza de date de acces (conexiune) poate fi)

SELECT * INTO Tabel1 IN "D: \ Excel.xls" "Excel 5.0;" Din tabelul1

și toate

# xA0; # xA0; # xA0; Excel.Visible: = adevărat;
# xA0; # xA0; cu excepția
# xA0; # xA0; # xA0; pe E: Excepție face
# xA0; # xA0; # xA0; # xA0; MessageBox (mâner, PChar ("O încercare de descărcare a datelor în Excel a eșuat:" # 13 # 10 +
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; E.Message +
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # 13 # 10 "Verificați prezența Excel pe calculatorul meu"). "Eroare", MB_ICONERROR + MB_OK)
# xA0; # xA0; sfârșitul;
# xA0; în cele din urmă
# xA0; # xA0; Excel: = Neasignat;
# xA0; # xA0; Screen.Cursor: = crDefault;
# xA0; sfârșitul;
se încheie;


>] sniknik: Ei bine, de ce alegeți întotdeauna cea mai dificilă distanță de frânare? (întrebare retorică)

Pentru că nu cunosc mai bine această opțiune. )
Dintre cele 2 oferite (găsite pe forum), acesta a fost cel puțin mai ușor de înțeles.

> SELECT * INTO Tabel1 IN "D: \ Excel.xls" "Excel 5.0;" DE LA
> Tabelul1

"Excel 5.0;" Este aceasta versiune? Și de ce indica?
INTO Tabelul1 - Aceasta este o indicație, din care componentă (în cazul meu ADOQuery) luăm datele pentru Excel?

> "Excel 5.0;" Este aceasta versiune? Și de ce indica?
aceasta este indicația jetului (exemplu pentru acesta / acces (!)) pentru a utiliza isam Excel pentru încărcare.

> INTO Tabelul1 - Aceasta este o indicație, din care componentă (în cazul meu ADOQuery) luăm datele pentru Excel?
ADOQuery aici, la toate pentru a face cu ea, toate la nivelul bazei de date, care componenta de a utiliza acest soverschenno nu le pasă, deși kveri (dar mai bine ADOCommand), și Table1 este un nume de tabel în acces și într-o foaie Excel (înlocuitorul acestuia).


>] sniknik

Folosesc ADO + MSSQL.
Mulțumesc. Totul a lucrat pentru Access. Protestele.
Pentru MSSQL "Excel 5.0;" scrie sau altceva? La domiciliu MSSQL "Eu nu sunt. Eu doar nu am întâlnit noțiunea de" isam Excel ".

Îmi pare rău dacă am primit-o, dar va trebui să aflu, apoi până la capăt.


> modul în care informațiile conținute în DBGrid pot fi conduse
> în Excel?

www.EhLib.com

> Pentru MSSQL "Excel 5.0;" scrie sau altceva?
desigur, # xA0; OPENROWSET, sintaxa OPENDATASOURSE vezi în BOL, pentru exe chiar acolo în exemple este.


> SELECT * INTO Tabel1 IN "D: \ Excel.xls" "Excel 5.0;" DE LA
> Tabelul1

Se răcește.
Și poate fi același lucru, numai din accesul la IB?

> Și este posibil ca, numai de la Access în IB?
Ei bine, puteți încerca, ISAM pentru ODBC, de asemenea (printr-un "focus" similar cu MSSQL trece, adică nu de la MSSQL, care este normal, și anume, de la accesoriu).

da, nici măcar interesant. de la prima încercare a trecut
a descărcat șoferul gemeni, a creat DSN - Gemini. anchetă
SELECT * INTO [ODBC; DSN = Gemini;] Tabelul1 Din tabelul1
a lucrat fără probleme.

Problemele cu exportul vor dispărea dacă veți folosi DBGridEh din biblioteca EhLib. Pentru frăția noastră de la cei liberi, sunt doar măsurile de viitor ale ECHE shnik embarrass.


>> Pentru MSSQL "Excel 5.0;" scrie sau altceva?
> Desigur, # xA0; OPENROWSET, sintaxa OPENDATASOURSE
> vezi în BOL, pentru exe chiar acolo în exemple este.

O mulțime de site-uri, forumuri, vulpi scormoniți. Nicăieri nu am găsit exemple de exportare de la MSSQL la Excel prin interogare SQL (numai prin OLE). (
Deci decizia a fost plăcută. Nu știu ce sintaxă este necesară pentru MSSQL "eu.
Ce este BOL, nu știu? Spune-mi unde să merg, unde să te uiți?

Care este esența exportului de la MSSQL la Excel prin interogarea SQL?
Faptul este că MSSQL poate arunca direct datele în XL. În DTS, există chiar o conexiune Microsoft Excel. Configurați pachetul și executați-l când este necesar. Dar există o capcană - nu am nici o idee de ce, dar MSSQL și Excel nu sunt prieteni la nivelul fișierelor .xls. Datele expediate exact în .xls se dovedesc a fi "problematice". De exemplu, numerele merg ca text, dacă câmpul (varcahr sau altceva cu acesta) conține înregistrări pur din numere, alternând cu înregistrări cu text, atunci textul sau numerele nu sunt afișate.
Prin urmare, soluția cea mai convenabilă se bazează pe propoziția _Lucky_ [2].
În DTS, este creat un pachet care aruncă informații în .csv, care este apoi încărcat în XL.

> O mulțime de site-uri, forumuri, vulpi scormoniți.
ai fost imediat trimis la BOL. bouks online, MSSQL ajuta cu ea și merge. Vedeți secțiunea cu privire la cuvintele specificate. disponibil -

Exemple
Acest exemplu accesează datele dintr-un tabel pe o altă instanță a serverului SQL.

SELECT # xA0; *
DE LA # xA0; # xA0; # xA0; OPENDATASOURCE (
# xA0; # xA0; # xA0; # xA0; "SQLOLEDB",
# xA0; # xA0; # xA0; # xA0; "Sursa de date = ServerName; ID utilizator = MyUID; Password = MyPass"
# xA0; # xA0; # xA0; # xA0; ) .Northwind.dbo.Categories

Acesta este un exemplu de interogare împotriva unei foi de calcul Excel prin intermediul furnizorului OLE DB pentru Jet.

SELECT *
Din OpenDataSource ("Microsoft.Jet.OLEDB.4.0",
# xA0; "Sursa de date =" c: \ Finance \ account.xls "; ID utilizator = Admin; Password =; Proprietăți extinsă = Excel 5.0"). xactions







Articole similare

Trimiteți-le prietenilor: