< návrat zpět

MS Excel


Téma: Databázová úložiště pro Excel rss

Zaslal/a 2.10.2015 12:35

Riskuji další téma bez odezvy. Přesto, že to pokládám za stěžejní pro bezpečnost a spolehlivost práce s daty v Excelu, je dané téma jen velmi zřídka předmětem diskusí na excelských fórech. Nevěřím, že by to bylo způsobeno všeobecnou znalostí a bezkonfliktností práce s daty, uloženými v SQL databázi. Spíš to bude tím, že vývojáři o této možnosti nevědí dost, aby ji více využívali.
I já jsem dlouho vycházel z představy, že k tomu, abych takovou databázi mohl využívat, musím k ní získat přístup z externího zdroje, když sám žádný prostředek pro její založení a obsluhu nemám. Tuto představu u mne změnila účast na jednom setkání vývojářů Excelu a na něm mimochodem vyslovená jediná věta. Stalo se to v roce 2007 a změnilo to tehdy zásadně můj pohled na práci s daty v Excelu. O řádovém posunutí práce s daty v SQL databázi proti jejich uložení v Excelu jsem nepochyboval ani předtím. Dozvěděl jsem se tehdy tu "zásadní maličkost", že Excel je plně vybaven prostředky, aby si sám vytvořil SQL databázi accessového typu (.MDB) a sám ji také plnohodnotně obsluhoval. Tím padl můj základní argument, že bych jinak musel MS Access kvůli tomu pořídit.
Vše stálo a padalo s knihovnou DAO, kterou má Excel ve výbavě snad od zrodu objektového modelu Excelu a kterou stále obsahuje (již mnoho let ve verzi 3.6). Tato knihovna je určena přímo pro práci se soubory typu .MDB a pro tento účel je jednodušší a rychlejší, než později zavedená knihovna ADO.
Před osmi lety jsem se tomuto tématu pár týdnů intenzivně věnoval. Výsledkem byly (kromě zpracování několika školních sešitů s příklady pro vytvoření a využití databáze .MDB v Excelu) i dva texty, které shrnovaly vše zásadní, co jsem k tématu tehdy zjistil. Teď jsem si tu osm let starou práci prohlédl. S trochou překvapení i nostalgie jsem zjistil, že na jejich znění ještě dnes nemám potřebu změnit ani čárku. Úvodní text z tohoto balíčku sem dávám k nahlédnutí. V případě zájmu (na který ovšem moc nevěřím) mohu plynule navázat popisem práce s knihovnou DAO, případně se zmíněnými školními sešity.

Zaslat odpověď >

#027146
avatar
Ještě příloha na zvláštním talířku 5
Příloha: zip27146_sdileni.zip (12kB, staženo 30x)
citovat
icon #027147
avatar
Pár tunajších prispievateľov kombináciu Excel ako front-end a vlastných tabuliek v externom úložisku (nejaký druh DBMS) využíva, určite sa to týka napr. DAALa, tipujem i Luba a eLCHu (výčet nie je úplný, ostatným sa ospravedlňujem, pokiaľ som ich nemenoval). Osobne ako back-end v prípade potreby používam hlavne Access (páč ho mám), v poslednej dobe tvorím niečo i proti datám v MS SQL serveri. Máte pravdu v tom, že Access samotný na vytvorenie .mdb nie je nutný a Excel to zvládne vlastnými integrovanými nástrojmi. Ja len doplním, že MS SQL server express je zadarmo, takže pokiaľ niekto nie je ochotný utratiť peniaze za Access a pritom si netrúfa na tvorbu databázy programovo pomocou SQL inštrukcií CREATE/DROP table atd., tak ten SQL server express ponúka istý komfort, ktorý tvorbu databázy uľahčí..
Mne v tomto smere "otvoril oči" Craig Hatmaker, ktorý má uvedené techniky krásne popísané na svojom blogu: https://sites.google.com/site/beyondexcel/homecitovat
#027148
avatar
Vůbec si nemyslím, že by zkušení vývojáři spolupráci Excelu s SQL databázemi nevyužívali. Dodávají tím svým aplikacím mnoho vynikajících vlastností a schopností. Nejde mi o tyto "zasvěcence". To by bylo nošení dříví do lesa. Pokusil jsem se vzbudit zájem v těch, kteří zatím s databázemi nepracují. Tam cítím velký potenciál pro zapojení účinných technologií do práce s Excelem.
Také netvrdím, že svět osm let spal a že moje archeologie je objevná. Chtěl jsem jenom říct, že jsem před osmi lety pro sebe objevil něco, co jiní znali léta přede mnou a co mnozí současníci neobjevili dodnes. Mne prostě překvapuje, že ani po tolika letech nepatří aktivní spolupráce Excelu s databázemi ke standardní výbavě běžných vývojářů.
A nakonec: chtěl jsem podat ruku těm, kteří by to rádi zkusili, ale nevědí, jak do toho. Nabízím ovšem cestu starou osm let. Tu mám osahanou, k té se umím vyjádřit a tu také v případě potřeby stále využívám. Zatím jsem si bohatě vystačil. Kdo se na to cítí, může si jistě najít novější možnosti.
Podstata problému podle mne nespočívá v tom, jaký přístup k databázím zvolím. Podstatou je to, zda vlastní databáze pro své aplikace vytvářet a používat umím.citovat
#027153
elninoslov

"Vovka" napsal/a:

... V případě zájmu (na který ovšem moc nevěřím) mohu plynule navázat popisem práce s knihovnou DAO, případně se zmíněnými školními sešity.

No ak ste ochotný sa podeliť, ja si to rád prečítam vo voľných chvíľach. V CZ/SK zase až tak veľa info tohto typu nieje.citovat
#027159
avatar
Ahoj! Taky si rád přečtu Tvou studii.
DAO respektive ACEDAO jsem sice už objevil a i používám, ale doufám, že mě Tvá studie může obohatit.
Předem díky!citovat
#027306
avatar
DAO je opravdu pro MDB lepší, i když často zavrhovaná ve spojitosti s ADO. S čím ale nesouhlasím, je vytvářet naslepo databáze z Excelu. Ostatně dost a dost se ošívám i při updatu dat z Excelu do databáze. Jestli to myslíte vážně s databází a nemáte Access (já bych se na něj vykašlal, i když existuje Runtime zdarma), fajn, jukněte na MySQL, PostgreSQL nebo nějakou Lite verzi MS SQL včetně manažeru. O tom vděku nevděku, reakcích a tady i jinde a nadšení - no jste naivní, nic ve zlém.citovat
#027450
avatar
Předně bych nespojoval bezpečnost dat s formátem mdb. Accdb bude o něco málo bezpečnější, ale... Potom Vás bude zajímat knihovna Microsoft Office 1x.x Access database engine Object Library.
V tomto případě bych nesrovnával DAO s ADO, ale s ADOX. Runtime bych sem neplet.

Z těch tří navrhovaných db systémů bych preferoval MS SQL Server express edici. Také pro komerční použití, TSQL, Management studio, 10Gb omezení, myslím max. jedno jádro. Z excelu přes ADO a ODBC ovladače - to je dost hrůza - na druhou stranu můžete vytvářet uložené procedury, ty jsou předkompilované. Také přesunete zátěž ze souborového serveru na databázový - což je žádoucí. Tady jsem o tom všem "filozofoval" :) a přiložil třídu http://wall.cz/index.php?m=topic&id=23792

Nechci sem zase plést VSTO nebo App for office, ale tam si můžete sáhnout pro ADO.NET nebo EF. To uvádím jen jako nejvhodnější volbu v kombinaci s MS SQL serverem.

Umím si ale živě představit situaci, kdy se Vaše řešení může hodit. V kostce: zatím držím databanku do cca 100 000 řádku v excelu, hodilo by se mi pro zpracování trocha SQL a nechci, kvůli problémům při určování datového typu, použít ADO na excelovský list. Nemám a nechci access, instalace db serveru se z nějakého důvodu nehodí.

Sem s tím, rád bych se také juknul.citovat
#027454
avatar
To DAAL:

Klobouk dolů, přehled máte. Ten datový typ.. no jo, no veškeré MS JET krávoviny, IMEX, ... ten typ se trochu uřídít dá, ale ne moc, navíc třeba Excel 2010 neumí pořádně převzít čas, prostě je to peklo.. Člověk si nevybere, CSV i přes schema.ini taky nedokáže všechno, ...pak se do toho namíchá potřeba exportovat do UTF-8, furt něco.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 0:34

Vynásobit hodnoty kurzem - Power Query

Alfan • 24.4. 16:32

Relativní cesta - zdroje Power Query

Alfan • 24.4. 15:44

Relativní cesta - zdroje Power Query

elninoslov • 24.4. 14:26

Jak odstraním duplicitní údaje

Mirek8 • 24.4. 12:13

Jak odstraním duplicitní údaje

elninoslov • 24.4. 8:57

Vyhledej

PavDD • 24.4. 8:56