< návrat zpět

MS Excel


Téma: ADO přístup k sešitu rss

Zaslal/a 19.11.2010 17:39

Prosím o pomoc, dlouho už hledám naležitý selekt kterým bych použil k vrácení záznamu ze sešitu.

Sloupce nemám pojmenované, zkoušel jsem knim přistupovat přez F(index). To není problém.

Dotaz = "SELECT F1,F4,F3 FROM [" & List & "$] where F3='SM'"

Ale problém nastává, když nechci abych dostal vysledek z celého sešitu ale jenom z nějaké oblasti, nevím jak to zapsat. zkoušel jsem něco takového, ale je to chybné!

Dotaz = "SELECT * FROM [" & List & "$A7:R57] where [" & List & "$C7:C57]='SM'"

prosím o pomoc, jedná se mě oto, abych v klauzule WHERE mohl definovat omezení, aby to vracelo řádky pouze kde je hodnota ='SM'

děkuji za nápady

Zaslat odpověď >

Strana:  1 2   další »
#003232
avatar
Ahoj. CO TO JE ??? Tvůj požadavek mi připadá nesrozumitelný. Oa jaké ADO se jedná ??? To používáš v VB v Excelu ? Já ADO v Excelu použínám roky, a tohle jsem neviděl. Zkus to udělat formou procedury, která Ti sestaví SQL dotaz se vším co potřebuje. Ověř si každou proměnnou a správně rozlišuj string apod. tj apostrofy.
Na konci, před voláním DB použij Debug.Print a podívej se co jsi stvořil. Až pak to posílej do DB. jak jinak chceš najít, kde Ti to chcípe ? Posílat neověřený dotaz do DB.

Jinak odpověď na Tvou otázku je např:
... WHERE F4 = 'SM'
... WHERE F4 LIKE ('SM%')
... WHERE F4 LIKE ('%SM%')
... WHERE F4 LIKE ('%SM')citovat
#003233
avatar
díky za reakci ADO(access database object).

používám VBA v excelu to je zřejmé myslím.

Jde oto, že jsem psal, že nechci aby to hledalo v celém sešitu!!Co jsi napsal funguje jak jsme psal víše s F(index). Hledá to v celém sešitu!!To nechci

chtěl bych pořešit tohle

Dotaz = "SELECT * FROM [" & List & "$A7:R57] where [" & List & "$C7:C57]='SM'"

Select kde za FROM bude určená oblast, List1$A7:R57 určí oblast hledání. Ale jak použiji WHERE tak už je nefunkční nevím jak mám zapsat správny select.citovat
#003234
avatar
Stejně Ti nerozumím. Ty to posíláš zpět na excelovský list ??? nebo do externí databáze ???

Pokud je to do na excelovský list tak to nepoužívám, takže nevím. Pokud se nad tím zamyslím, tak mi to připadá stejně divné. Ty to předáváš do proměnné dotaz, takže je to celé asi string. Podle mě to nemůže fungovat.
Jak tento dotaz provedeš (spustíš)???citovat
#003235
avatar
Já čtu data ze sešitu přez sql dotazy, to se dá a dělá se to. Mám jako by pracovní sešit co ukládá datové sešity a ty se teĎ snažím číst!

No a potřebuji napsat to co jsem popisoval nahoře. Omezit hledání na oblast v sešitu.

tohle dotaz nefunguje a za boha nevím jak to udělat aby šel:
Dotaz = "SELECT f1 FROM [" & List & "$A9:R57] where F3='SM'"

Debug.Print Dotaz

rs.Open Dotaz, cn, adOpenKeyset, adLockOptimistic
MsgBox rs.RecordCountcitovat
#003236
avatar
Pokud to tedy žere RC konvenci, pak
Dotaz = "SELECT f1 FROM [" & List & "$A9:R57] where F3='SM'"

Dotaz = "SELECT f1 FROM [" & List & "R9:R57] where F3='SM'"
Za předpokladu že V buňce I1 až BE1 nejsou prázdné, nemají stejné jméno, asi že nezačínají číslem a že v jedné z těchto buněk je napsáno "F3"citovat
#003237
avatar
Já právě nevím začal jsem do excelu více pronikat teprve nedávno. Ty F1,F2,F2 nejsou bunky, ale tak se číslují sloupce F1 je první sloupec F2 je durý Fx je sloupec v tramtárii v tom je ten problém pokud použiji:

Dotaz = "SELECT * FROM [" & List & "$A9:R57]"
vše je korektní

ale jak začnu do toho dávat ty Sloupce F1 tak už je chyba na světě. Googlil jsem a nic moc jsem nenašel, ale myslím, že by to jít mělo!citovat
#003238
avatar
... Nechceš poslat vzorek ???

Sice to neznám, ale pokud do FROM vložíš [" & List & "$A9:R57]" (musíš mít C9:C57) pak to bere sloupce 9 až 57 což je I až BE, za předpokladu, že to žere RC konvenci.
SQL syntaxe je na webu taky k dispozici, můžeš se seznámit. Do FROM se vloží tabulka ... v případě excelu je to asi oblast buněk kde v prvním řádku jsou jedinečné názvy a pod těmito názvy jsou jednotlivé řádky databáze. Tj. předpokládám, že řádek 1 máš plný názvů. Moc Ti nevěřím, že se jedná o sloupce F1,F2 apod. To by to MSOFF docela skopal. Může to fungovat, za předpokladu, že do řádku A nadatluješ text F1,F2,F3 atd až max F256.

Jedinečný název ??? nevím, asi bych nedělal mezery a nepoužíval diaktriku.

Co se týče WHERE je to asi taky mimo.
[" & List & "$C7:C57] ... to je velká oblast ´která se má rovnat 'SM' ... tak to nefunguje ... dotaz se dává na jeden sloupec v rámci oblasti a proto jsou v prvním řádku daného sloupce jedinečnný název na který se odkazuješ ve svém SELECTu a nebo je zřetězíš přes AND,OR,XOR nebo NOT.
Když už tak [" & List & "$C7]='SM'" pak to bude hledat ve sloupci G2:G65536 řádky které obsahují 'SM'citovat
#003239
avatar
Díky vyzkouším a uvidím s těma F1...Fx to funguje nevidím důvod proč bych si měl vymýšlet a ty mě nevěřit:).

SQL vysvětlovat nemusíš něco ze školy znám.) Snad tomu příjdu na chuť a pak se tady podělím.

zatím díkycitovat
#003241
avatar
Takže to vypadá že problém vyřešen,

pro ujasnění první řádek nemusí obsahovat název, který by určoval sloupec! V mém případě neobsahuje!

F1,F2...Fx jsou indexace nepojmenovaných i pojmenovaných sloupcu od leva F1=první sloupec!

Takže Select F1 From vrací hodnoty z prvního sloupce!

Správný select je tenhle:
Dotaz = "SELECT F1 FROM [" & List & "[b]$A8:C57[/b]] where F3='SM'"

Chyba byla že jsem omezil hledanou oblast na A9:R57. Při oblasti A8:R57 je select funkční a proběhne!

přikládám kousek screenu jak list vypadá.
Příloha: png3241_screen_list1.png (633kB, staženo 19x)
3241_screen_list1.png
citovat
#003243
avatar
Docela mě to zajímá. Ten obrázek je nefunkční. Můžeš poslat celý sešit ???

Ještě k tomu výsledku. Ty Tím zjistíš pouze počet výskytu SM ??? Je to tak správně ?citovat

Strana:  1 2   další »

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

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32

Čas od do

jarek1111 • 18.4. 8:31