A dbgridtől az excelig

DBGrid-től Excel-be.

Kérem, mondja el a kezdőnek: hogyan lehet a DBGridben tárolt információkat Excel-be irányítani? (a DBGrid-ben húzom az SQL táblázatokból).

nézze meg a Szerverek összetevő fület
és az adatkészletben átmegy a rekordokon, és továbbítja a kiválasztott kiszolgálónak, figyelembe véve a formázást

Általában az MS Excel képes szinte bármilyen fájlt betölteni, pl. például * .csv, amelyben az oszlophatároló ";", és a fájl maga nem más, mint egy szokásos szövegfájl. Például
Családi név, utónév, utónév
Ivanov, Iván, Ivanovics
.

így Szükséges az összes rács fölé mentése, és a .csv kiterjesztésű fájl mentése, a mezők pontosvesszővel való elválasztása.

Ezenkívül a fájlokat más karakterrel is betöltheti szeparátorként, az Excel-ben is van egy olyan mód, amely lehetővé teszi a szeparátor kiválasztását, és a stlobtsa szélességét jelző fájlokat is betöltheti.

eljárás TForm1.btnExportClick (Feladó: TObject);
var

XL, // Excel alkalmazás
TableVals. Variant; # xA0;
i, LineCounter, # xA0;
queSelectRecCount,
queSelectFieldsCount. integer;
kezdődik

a queSelect do-val
kezdődik
SQL.Assign (memSelectLines);
DatabaseName: = edtDatabaseName.Text;
Nyisd;

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

első;
LineCounter: = 0;
míg az EOF nem
kezdődik
i: = 0 a queSelectFieldsCount-1-hez
ha nem, akkor a Fields [i]
TableVals [LineCounter, i]: = mezők [i] .AsString
más
TableVals [LineCounter, i]: = "";
LineCounter: = LineCounter + 1;
Következő;
végén;
Bezárás;
végén;

megpróbál
megpróbál
XL: = GetActiveOleObject ("Excel.Application");
kivéve
XL: = CreateOleObject ("Excel.Application");
végén;
kivéve
raise Exception.Create ("Nem lehet elindítani az Excel-t");
végén;

XL.Visible: = Igaz;
XL.Workbooks.Add;
XL.Range [XL.Cells [1,1],
XL.Cells [queSelectRecCount,
queSelectFieldsCount]]. Érték: = TableVals;
XL.Range [XL.Cells [1,1],
XL.Cells [queSelectRecCount,
queSelectFieldsCount]] Borders.Weight: = 2;
végül
Screen.Cursor: = crDefault;
végén;
végén;

A Dell3r úgy döntött, hogy használja a kódot.
Van egy kis módosítás és néhány kérdés.
1) Mielőtt a "végül" egy Vége, amely bezáródik, kihagyja.

2) Ahogy értem, a queSelect a TQuery egyik eleme.
A "memSelectLines" a TMemo egyik eleme? (Vagy félreértettem, és nem igazán értem, miért használják ezt a sort)
3) E tekintetben az ADO-t egy másik kérdésre használom fel:
"DatabaseName: = edtDatabaseName.Text;". Az ADOQuery-ban nincs "DataBaseName" tulajdonság. Megértettem, hogy az "edtDatabaseName" a "TEdit" komponense. Most töröltem ezt a sort. )
4) Az alkalmazás megkezdődött. A kód végrehajtása során hiba keletkezett: "A Vibor.exe projekt emelte az Exception class EoleException üzenettel" Nem sikerült tárolni a MemSelect tárolt eljárást "Process stopped ..."
Úgy tűnik, hogy ha lefordít oroszul, nem találja a MemSelect tárolt eljárását. De nem írtál semmit a tárolt eljárásokról. Vagy nem értettem semmit. )

ps Segít megérteni.

miért mindig válassza ki a legnehezebb és a féktávolságot? (retorikai kérdés)
Miért van szüksége rácsra? miért nem rakod le az adatbázisból? könnyebb és gyorsabb, miért az első, akkor menj vissza oda?
például (az adatbázis nincs megadva, de például a c hozzáférési adatbázis (kapcsolat) lehet)

SELECT * INTO Table1 IN "D: \ Excel.xls" "Excel 5.0;" A 1. táblázatból

és mindent

# xA0; # xA0; # xA0; Excel.Visible: = igaz;
# xA0; # xA0; kivéve
# xA0; # xA0; # xA0; az E: kivétel esetén
# xA0; # xA0; # xA0; # xA0; MessageBox (fogantyú, PChar ("Az adatok letöltése Excel-ben sikertelen: # 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 "Ellenőrizze az Excel jelenlétét a számítógépemen."). "Hiba", MB_ICONERROR + MB_OK)
# xA0; # xA0; vége;
# xA0, végül
# xA0; # xA0; Excel: = Nincs hozzárendelve;
# xA0; # xA0; Screen.Cursor: = crDefault;
# xA0; vége;
végén;


>] sniknik: Nos, miért mindig válassza ki a legnehezebb és a féktávolságot? (retorikai kérdés)

Mert nem ismerik jobban az opciót. )
A felajánlott 2-ből (a fórumon található) ez legalább érthető volt.

> SELECT * INTO Table1 IN "D: \ Excel.xls" "Excel 5.0;" FROM
> 1. táblázat

"Excel 5.0;" Ez a verzió? És miért jelezzék?
INTO Table1 - Ez azt jelzi, hogy mely összetevő (az én esetemben ADOQuery) az adatokat Excel-be vesszük?

> "Excel 5.0;" Ez a verzió? És miért jelezzék?
ez a jele a sugárnak (példa erre / hozzáférés (!)), hogy használjon Excel-t feltöltésre.

> INTO Table1 - Ez azt jelzi, hogy mely komponensből (az én esetemben ADOQuery) az adatokat Excel-be vesszük?
Az ADOQuerynek semmi köze ehhez, minden az alap szinten, melyik összetevő nem nagyon rossz, legalábbis lekérdezések (de jobb ADOCommand), és az 1. táblázat a hozzáférési táblázat és az excel (helyettesítő) lapja.


>] sniknik

ADO + MSSQL-t használok.
Köszönöm. Minden az Access-en dolgozott. Tiltakozások.
MSSQL "Excel 5.0;" írjon vagy valami mást? Otthoni MSSQL "Nem vagyok.Én csak nem találkoztam a" isam Excel "fogalmával.

Sajnálom, ha megkaptam, de meg kell találnom, majd végül.


> hogyan lehet a DBGrid információit irányítani
> Excel-ben?

www.EhLib.com

> MSSQL "Excel 5.0;" írjon vagy valami mást?
természetesen, # xA0; OPENROWSET, OPENDATASOURSE szintaxis lásd a BOL-ban, a exel esetében a példákban van.


> SELECT * INTO Table1 IN "D: \ Excel.xls" "Excel 5.0;" FROM
> 1. táblázat

Cool.
És lehet ugyanaz, csak a hozzáférés az IB-ben?

> Lehetséges, hogy csak Access in IB?
Nos, megpróbálhatod, isam ODBC-hez is (ehhez hasonló "célzás" az MSSQL átjárókkal, azaz nem MSSQL-ből, ami normális, nevezetesen a tartozék).

nda, még nem is érdekes. az első kísérlet óta eltelt
letöltötte a gemini meghajtót, állította be a DSN - Gemini. érdeklődés
SELECT * INTO [ODBC; DSN = Gemini;] 1. táblázat A 1. táblázatból
gond nélkül dolgozott.

Az exportálással kapcsolatos problémák eltűnnek, ha a DBGridEh szolgáltatást az EhLib könyvtárból kívánja használni. A szabadságért való közösségünkért ez csak a jövőbeli ECHE shnik zavarásának mértéke.


>> MSSQL "Excel 5.0;" írjon vagy valami mást?
Természetesen, # xA0; OPENROWSET, OPENDATASOURSE szintaxis
> nézd meg a BOL-ban, hogy a példákban ott van exel.

Sok helyszín, fórum, rókák rágtak. Nem találtam semmilyen példát arra, hogy az SQL-lekérdezésből (csak az OLE-n keresztül) exportálhatok az MSSQL-ről az Excel-be. (
És így a döntés kellemes volt. Nem tudom, hogy milyen szintaxisra van szükség az MSSQL számára.
Mi a BOL, nem tudom? Mondja meg, hová kell mennie, hol kell keresnie?

Mi az a lényege, hogy az SQL-lekérdezésből exportálunk az MSSQL-ből az Excel-be?
Az a tény, hogy az MSSQL közvetlenül dobhatja az adatokat az XL-ben. A DTS-ben létezik még egy Microsoft Excel kapcsolat is. A csomagot konfigurálja és futtatja, ha szükséges. De van egy csapda - fogalmam sincs miért, de az MSSQL és az Excel nem barátok a .xls fájlok szintjén. Az .xls pontosan beágyazott adatok kiderülnek "problémásnak". Például a számok szövegként jelennek meg, ha a mező (varcahr vagy mással együtt) pusztán számokból álló rekordokat tartalmaz, váltakozva a szöveges rekordokkal, akkor sem a szöveg, sem a számok nem jelennek meg.
Ezért a legmegfelelőbb megoldás a _Lucky_ [2] mondaton alapul.
A DTS-ben létrehoz egy olyan csomagot, amely információkat bocsát ki a .csv fájlba, majd XL-be tölti.

> Sok webhely, fórum, rókapás.
azonnal elküldték a BOL-nak. bouks online, az MSSQL segíti és megy. Lásd a megadott szavakat. elérhető -

Példák
Ez a példa az SQL Server egy másik példányán lévő táblázathoz tartozó adatokhoz fér hozzá.

SELECT # xA0; *
FROM # xA0; # xA0; # xA0; OPENDATASOURCE (
# xA0; # xA0; # xA0; # xA0; „SQLOLEDB”
# xA0; # xA0; # xA0; # xA0; "Adatforrás = kiszolgálónév; felhasználói azonosító = MyUID; jelszó = MyPass"
# xA0; # xA0; # xA0; # xA0; ) .Newwind.dbo.Categories

Ez egy példa egy lekérdezésre az Excel táblázathoz az OLE DB szolgáltató számára a Jet számára.

SELECT *
FROM OpenDataSource ("Microsoft.Jet.OLEDB.4.0",
# xA0; "Adatforrás =" c: \ Finance \ account.xls "; Felhasználóazonosító = Adminisztrátor; Jelszó =; Bővített tulajdonságok = Excel 5.0"). xactions

Kapcsolódó cikkek