Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 4. 4. 2016 14:37:56

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

Prostudoval jsem ukázky maker které byly nabídnuté v diskusi (ListBox-seznam hodnot s filtrem od keymaker) ale bohužel jsem nenašel to, co jsem hledal, tedy zkusím ještě přímý dotaz.


Jedná se mi o syntaxi basicu v makru pro přímý přístup do pole tabulky. V soušasné době používám funkční, ale trochu krkolomný postup: Na formulář umístím prvky např. TEXTBOX1 a TEXTBOX2 propojené s danými tabulkami a makrem řídím pohyb v tabulkách (např. oForm1.first, oForm1.next atd.) tím se mi aktualizuje údaj v TEXTBOX1. Ten pak dokážu makrem načíst do proměnné A=oForm1.getByName("TEXTBOX1").text, uložit do jiného prvku TEXTBOX2 oForm2.getByName("TEXTBOX2").text=A a následně uložit do tabulky s níž je TEXTBOX2 propojen oForm2.getByName("TEXTBOX2").commit a potom oForm2.updateRow()  Ale při větším počtu přenosů je to pomalé (aktualizuje a překresluje se formulář, bliká to a podobně).


Dotaz tedy zní, jak pomocí makra "šáhnout" přímo do tabulky (tedy nahradit A=oForm1.getByName("TEXTBOX1").text něčím jako A=Tabulka1.Řádek.Sloupec) a následně pak toto uložit do jiné tabulky (tedy nahradit TEXTBOX2 oForm2.getByName("TEXTBOX2").text=A něčím jako Tabulka2.Řádek.Sloupec=A)


Díky za radu

Editoval hdplot (8. 4. 2016 14:13:27)

Offline

#2 4. 4. 2016 16:35:36

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

Tohle jde velice dobře, ale pro Calc (ten může být zdrojovou tabulkou pro Base).
     Pro Base bez Calcu by to mělo jít pomocí SQL. V makru se musí zadat správně číslo řádku - tedy jak kopírovaného tak toho kam se musí vykopírovaný vložit (ten může být asi jen prázdný - tedy poslední v doplňované tabulce).
     Příklady maker které obsahují SQL volání tam nějaké jsou. Není jich tam bůh ví kolik, ale nějaká tam jsou. Toto musíte přizpůsobit. Zhruba by to mělo vypadat takto :

1. - udělejte funkční volání například z listboxu - mělo by obsahovat SQL směřované do správného souboru. To se dá nastavit i pomocí dotazu a pak to otevřít jako SQL.
2. Totéž udělat pro přidání záznamu do správné tabulky.
3. Nyní byste měl mít oba dotazy. Opakuji že musí být konkrétně směrované. Nemůže to být nějaký vágní příklad - ten byste asi nedokázal přepsat. (To je právě na makrech v Base obtížné.)



     - v makru deklarovat správně proměnné (typ - aby souhlasil jak se zdrojem tak s cílem). List box Vám dá jen jednu, nebo nejvýš 2 proměnné. Vy budete chtít ale více. Například adresu, jméno, PSČ, email telefon ap. Takže tam bude například :
Sub Moje_Kopirovani
Dim adr1, adr2, email1, email2 as string
Dim psc1, psc2, tel1, tel2 as integer
     - každou proměnnou voláme samostatně :
adr1 = "SELECT....."
email1 = "SELECT..."
psc1 = "SELECT....."
tel1 = "SELECT....."
     - Také každou "buňku" cílového dokumentu vyplníme
adr2 = "SELECT.....= adr1"
email2 = "SELECT...= email1"
psc2 = "SELECT.....= psc1"
tel2 = "SELECT.....= tel1"
Refresh (tohle tam je tak to zaveďte jako odkaz na opsané makro - může se jmenovat i jinak)
End Sub


     Makro by se mělo napojit na ovládací prvek kterým vybíráte kopírovaný řádek. Tedy například na ten ListBox (Combo je zbytečné). Makro by mělo převzít vybraný údaj a podle běj natáhnout vše co potřebujete. Jestli si to dobže vybavuji tak by to mělo být ListBoxem vyhledaný výraz "AS" - název sloupce. List box pak nic jiného dělat nemusí - jen postne vybraný výraz do makra.
     Podobně zápis - tam bude například začínat klientem (sloupec 1) datum + čas (z funkce NOW) - ve druhém sloupci - to se vygeneruje - nenačítá se to pokud to není výslovný opis (například poslední nákup, nebou součet částek nákupů ke dni ap.)


     Ovšem to pro Vás asi bude problém. Ani já jsem nic takového dlouho nedělal. Takže klidně soustřeďte data konkrétního případu a postněte mi to. Respektive udělejte vzorový příklad databáze a postněte ho sem.


     Jde o to, že sice chcete jen makro, ale to musí být od počátku konkrétní. Já k ničemu takovému příklad stavět nebudu. To by dopadlo špatně - hodně špatně se to přizpůsobuje a stačí málo aby to nechodilo.

Editoval neutr (4. 4. 2016 16:37:34)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 5. 4. 2016 07:45:58

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

V principu asi chápu, co máte na mysli, ale jde o tu syntaxi. Laicky řečeno (s odkazem na výše uvedené) když nebudu vědět, že právě slovo "commit" uloží hodnotu do tabulky, tak příkaz oForm2.getByName("TEXTBOX2").commit nedám dohromady. Totéž platí o slově "getByName" a podobně. Určitě existuje i slovo "getBy něco jiného" třeba "getByIndex" ale když to nevím, tak to nevymyslím. Všechny mnou používané klíčové výrazy jsem postupně vyhledal v různých jiných makrech a příkazy modifikoval pro svoji potřebu. Kdysi jsem programoval v Delphi, tak mám určitou představu, jak to funguje. Editor zdrojového kódu Delphi ale i Basicu podle rozepsaného výrazu automaticky nabízí možnosti jak pokračovat, ale OpenOffice toto neumí.


http://ulozto.cz/xK8wqhUK/kusovnik-odb


Na odkazu je tedy vzorová databáze - jedná se o již dříve diskutovaný Kusovník. Je plně funkční, ale s růstem počtu dat se zpomaluje, tak to chci řešit, dokud je čas. Je toho tam víc, ale z důvodu provázanosti nechci zbytečně mazat, aby se neporušila funkčnost. Jedná se o formulář Kusovník-zadání nebo Kusovník-výpis a v nich použitá makra.


Makra Vynuluj_Zaznamy_R1 nebo Vynuluj_Zaznamy_Final - řeší zápis dané hodnoty do tabulky - tedy výše uváděný příklad oForm2.getByName("TEXTBOX2").text=A
Makro Prepis_Cislo_vykresu pak řeší oboje - tedy jak výběr hodnoty z tabulky, tak také její zápis do jiné tabulky.


Pokud se Vám podaří na těchto makrech ukázat postup, tak ostatní si již upravím sám - v tom už pak nevidím problém - je to modifikace funkčního postupu na jiné podmínky.

Offline

#4 5. 4. 2016 14:14:23

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

Já jsem si prohlédl zejména dotazy a formuláře. Popravdě jsem byl spíš zděšený než co jiného.
- Dotazy jsou většinou dobře, ale podle mne je tam pár případů s chybou. Když si prohlédnete dotazy jako SQL tak uvidíte zelené písmo - například  KusovníkANO/NE ...FROM { OJ "Dotaz_Kusovnik_Det+Ses_Group" RIGHT OUTER JOIN "Vykresy" ON "Dotaz_Kusovnik_Det+Ses_Group"."Vykres_ID" = "Vykresy"."Vykres_ID" }
     Je to tam ale vícekrát stejně jako například Dotaz_Kusovník_detaily .... WHERE NVL ( "Sestava", 99999 ). Také nevím proč jsou čísla v černé barvě - to jsou zřejmě chyby syntaxe.



     Ještě podivnější je formulář Kusovník výpis. Tam je překrytých mnoho prvků a mají podivné názvy formulářů. To je asi pozůstatek ze začátku práce, ale způsobuje mi to potíže s načítáním a vypínáním.
     S tím zřejmě souvisí také volání prvků na formulářích. Názvy musí být unikátní - tedy zejména názvy formulářů (MainFormů) a SubFormulářů. Vidím tam pár správných, ale těch prvků je hodně a chce to jistě upořádat.
     Některé prvky - tlačítka mohou vykonat předdefinovanou akci - například obnovit formulář. Jde ale o typ tlačítka. Když je na něj navěšené makro tak by mělo chodit na jiné události.


     Syntaxi příkazů si z paměti nepamatuju, ale většinou se opodívám na Google i když přibližně vím oč jde. Proto Vám mohu doporučit zejména Japonský server :
Base_1
Base_2
     K tomu malou radu. Ty japonské klikyháky normálně jdou přeložit (používám Google translator ve Firefoxu - je nazván "T"). Umí překládat řádky, odstavce i jednotlivá slova a výrazy. Takže to na stránkách přeložím a zkopíruji už přeložené do Basicu.
     Zejména ta druhá část obsahuje HSQLDB : SQL(Query), ale většinou je tam vše o "Data (table) manipulation".
     Jinak výrazy pro SQL jsou v sešitě Writer (s těmi příklady v zipu). Když zadáte adresy které tam jsou dostanete se na více detailů. Také stačí většinou zadat hledání : něco jako "openOffice macros .Commit" a podobně.


     Ještě bych doporučil nepoužívat makra s předdefinovanými akcemi. Například "obnovit" a pak spustit makro pro aktualizaci nedává vždy žádaný výsledek. Takže raději vybrat "žádnou akci" a vše zaředit jako volané makro ve správné posloupnosti.
     Také bych řekl, že těch formulářů může být mnohem méně. Transakce se dají udělat bez nich. Zase chápu že je to pozůstatek z té klasické fáze. Já tam třeba vidím určitý střet zájmů různých rolí. Ne všichni budou vkládat detaily. Rozpočtář potřebuje jen zavolat všechny sestavy kvůli výpisu a docenění. Projektanta zase aktuální cena nemusí moc zajímat. Obchodník pak zavolá obrázek a na dožádání orientační cenu - a pak možná dojde na detaily.


     V každém případě je to docela náročný projekt. Osobně bych polovinu práce přesunul do Calcu. Zejména vyhledávání (ve spolupráci s databází). Tam se mnohem lépe pracuje se seznamy ap.

Editoval neutr (5. 4. 2016 14:19:54)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 6. 4. 2016 10:06:16

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

Amatér vyděsil profesionála :-)). Ale vážně: Jsem bývalý programátor-amatér a databáze jsem kdysi řešil v rámci Delphi (BDE a Paradox). Toto už na W7 nefunguje a hledal jsem jiné free řešení pro obdobnou činnost, jaká byla řešená Paradoxem (správa výkresové dokumentace). Začínal jsem od nuly jak s obsahem databáze (vlastní data), tak se znalostmi OO Base. Výsledkem je to, co jste viděl, i když celý projekt obsahuje ještě další části - evidence času a vyhodnocování časové náročnosti jednotlivých projektů atd. ale to z hlediska požadavků na Basi jsou věci, které jsem vyřešil bez maker pouze prostředky SQL.


VYSVĚTLENÍ

1)


Zelené písmo v dotazech - nevím sice, proč je zelené, ale např. "NVL" je příkaz jazyka SQL který jsem nastudoval v publikaci "PROGRAMOVÁNÍ V SQL", kterou mám v pdf odněkud staženou z netu. Celou publikaci můžu poslat, nebo někam uložit. Cituji publikaci:

FUNKCE NVL
Můžete použít funkci NVL pro převedení hodnot sloupce, obsahujícího hodnoty null, na číslo před provedením výpočtu. Je-li aritmetický výpočet proveden s hodnotou null, výsledek je null. NVL funkce může převést hodnotu null na číslo, než jsou aritmetické výpočty provedeny, aby se zabránilo výsledku null.

Bez této funkce jsem nebyl schopen dotaz sestavit tak, aby dělal to co potřebuji a Base proti zápisu nic nenamítala (kromě barevného odlišení, ale to nemusí být chyba), takže si myslím, že je to dobře. Totéž lze uvést i pro červeně zvýrazněné texty.

Funkci "OJ" doplnila sama Base - když dáte v editaci SQL dotazu přes pravé tlačítko na spojení tabulek a vyberete "edit..." dostanete tabulku Join Properties a po nastavení vlastnosti "Right join" Base doplní právě ono slůvko "OJ"


2)

Určitá nekoncepčnost v názvosloví opravdu vychází z toho, že to bylo sestavováno metodou Pokus-Omyl a v okamžiku, kdy to začalo fungovat, tak nebyla nutnost do toho šahat a hledat "mouchy" v názvosloví, protože by se mohlo stát, že to opět fungovat přestane - tedy krok zpět. Ale pokud se mi podaří makra upravit viz téma současného vlákna, tak v rámci těchto oprav upravím i názvosloví. Mnoho prvků (neviditelných za chodu formuláře) souvisí právě s problémem, že neumím přímo šáhnout do databáze ale jenom přes nějaké editační pole. Tedy pro každý přesun záznamu z tabulky do tabulky potřebuji 2 pomocné prvky. Je to určitě nevhodné a ztrácí se přehled, proto jsem otevřel tuto diskusi a chtěl bych to řešit ....


3)

Pokud se týká obsahu a počtu formulářů - databáze slouží pouze pro moji potřebu (orientace ve výkresové dokumentaci). Kusovník není v pravém smyslu kusovníkem s vazbou na technologii a cenotvorbu a ani tímto být neměl. Je to pouze databáze výkresů s možností rozpadu podsestav a hledání. Neobsahuje tedy "nevýkresové" položky (např. spojovací a jiný nakupovaný materiál) ani počty kusů. Jde mi pouze o to, abych se orientoval v tom, co jsem v rámci své činnosti OSVČ vytvořil, abych to rychle dohledal dokázal udělat seznam předávané dokumentace i s již dříve použitými podsestavami třeba z jiných projektů a nedubloval již hotové věci. Tedy z mého pohledu je to šité na míru a zcela to vyhovuje mým potřebám.


DOTAZ A PODĚKOVÁNÍ

" .... osobně bych polovinu práce přesunul do Calcu ..." V zásadě se tomu nebráním, ale s Calcem mám (kromě běžné práce typu "sečíst hodnoty ve sloupci") také nulové zkušenosti. Zkoušel jsem propojit Calc tabulku s Basi - načetla to, ale nedokázal jsem hodnoty v tabulce Calcu z prostředí Base změnit a doplnit. Nevím tedy přesně, jak "přesunout práci do Calcu" - možná by mě pomohla nějaká ukázka přímo v mém zaslaném příkladu Kusovníku - pokud můžu poprosit.

Na odkazy jsem koukal - z japonštinou nemám zkušenosti, ale jak píšete "strýček Google" si s tím poradí, tak to snad půjde. Je tam spousta příkladů, které by asi mohly obsahovat to, co hledám, takže budu postupně studovat a s výsledkem pak seznámím.


Moc děkuji za pomoc

Offline

#6 6. 4. 2016 13:50:26

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

No já se necítím být v žádném ohledu "profíkem". Jednak jsem samouk a je pravdou, že specializace na databáze je trošku izolovaný (samostatnější) obor. Programátoři, nebo třeba analytici databází jsou dobře placení a je jich málo. Nikdo to moc dělat nechce zejména proto, že odborník umře se svým systémem který ze dne na den zastará.
     Tedy měl bych se přiznat, že jsem z počátku víc nežli koketoval s databázemi. Začal jsem s Approachem (Lotus Suite) a pak jsem chtěl přesedlat na Cache, ale to bylo moc drahé. Pak se objevily tabulkáče s mnoha řádky a já na databáze zanevřel.


     Já jsem neuváděl "čevená čísla, ale černá". On je problém v tom, že SQL pro ODF neobsahuje celou normu SQL 92. Viděl jsem, že to "nezlobí" klasicky. Spíš mi připadalo že to zelené písmo připomíná proměnné. Osobně jsem se s tím ještě nesetkal. Moje študování databáze se skládá spíš z toho, že najdu podobné řešení a pak zjišťuji podstatu. Většinou se dopracuju k tomu "proč" něco nechodí jak by bylo logické - a to mne spíš odradí než naopak.
     On tady běžel seriál, ale autor když si nevěděl rady tak přeskočil do MySql a bylo to často. Já tvrdím, že naše Base má výhodu v tom, že může spolupracovat s Calcem. Jinak by to byl čistý propadák.


      Calc se může (nemusí) zaregistrovat jako databáze. Výhoda je v tom, že lze tento Calc otevřít normálně při zavřené, ale i otevřené databázi. Jen nesmí být aktuálně načten. Pak se udělá vše co je potřeba, uloží a načte se Formem, nebo i dotazem. Tohle normálně s databázovou tabulkou, dotazem, nebo s pohledem nejde.
      Do Calcu lze načíst obsah tabulek a normálně pracovat. Tady jde například o hledání. Místo Vašich filtrů je možné použít například kontingenční tabulku, autofiltr a podobně. Ovšem inkremenální hledání lépe nežli v Calcu neuděláte. Například lze vytáhnout první písmena a udělat předvýběr pomocí Listboxu v Calcu. V Calcu lze snadno "změnit" obsah seznamu a dělal jsem pokusy s jediným Listboxem který hledal v rozsáhlém stromu dat. Tím chci říct, že lze použít bohaté textové funkce k úpravám a dohledávání. V databázi cokoliv "přepsat" - nejde? Ale i když to jde tak to trvá. Nějaké mazání dat - to je průšvih a jsou s tím problémy i v "dobrých" databázích.
      No a nejlepší je možnost z Calcu uložit tabulku CSV a tu pak načíst Basí. Když si to potom promyslíte budete hledat jen těžko něco kde by Base byla nepostradatelná. Calc mimochodem umí načítat, nebo exportovat nejen CSV, ale i dBase, nebo XML a další formáty.


      Uvedu příklad - Ty Vaše zástupné znaky jsme schopni nahradit jakýmkoliv kouskem názvu (zadání) který si pamatujeme a vyhledáme Search descriptorem, nebo dokonce vzorcem. Snadno lze postavit makro pro hledání chybných výrazů (i bez regulárních výrazů) o Case sensitive nemluvě.

Editoval neutr (6. 4. 2016 14:00:26)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 6. 4. 2016 14:22:13

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

Jestli to tedy dobře chápu, tak "přesunout práci do Calcu" znamená, že v Basi pomocí formulářů naplňuji tabulku daty, ale pro vlastní práci s daty (vyhledávání, třídění atd.) používám Calc, který se na databázi napojí a data si z ní tahá? Tedy v okamžiku, kdy současně plním data a vyhledávám, mám na liště Basi i Calc a přeskakuji mezi dvěma programy, místo toho, abych přeskakoval mezi dvěma formuláři programu Base?

Offline

#8 6. 4. 2016 14:44:04

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

Ano přibližně tak. Jen většinou stačí ten Calc. Jde o to, že databázi musíme načíst pokud není přímo Calc vedený jako zdroj dat. To jsou většinou CSV soubory. Ty můžeme načíst pokud není Calc zdrojem a pokud se s nimi zrovna nepracuje v Base. Pokud je zdrojem má nějak definované oblasti tabulek .. DATA > DEFINOVAT (vybrat) oblast.
     Pak soubor uložíme a pokud je zdrojem bude Base načítat z definovaných oblastí. Pokud není zdrojem, musíme data uložit nejlépe do adresáře který je registrovaný a Basí načteme tuto tabulku (CSV, DB a podobně, ale musí to být v rámci databázové integrity - to asi víte).


     Zdrojový Calc se dá ovládat jako "hidden" jiným Calcem. Ten pak může i číst, nebo zapisovat ap. Pak jde jen o to, aby zdrojový Calc nebyl zrovna načtený když chceme měnit data. Takže Base může být "vyladěná" pro oči - ale je to jen nešikovný záznamník.


PS : V Calcu můžeme udělat dialog který předčí v estetickém ohledu Formy databáze. Calc má k dispozici i stejné ovládací prvky a mohou být na dialogu který může překrývat minimalizovaný Calc. prostě na pohled opravdu pěkné a nikdo ani nemusí poznat, že pracujete s Calcem. Ten může startovat hned do dialogu.

Editoval neutr (6. 4. 2016 14:52:27)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 6. 4. 2016 16:18:47

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

To ale v mém případě znamená převést data do Calcu a začít znovu od začátku - tvorbou dialogů a všech vazeb a podobně. Vzhledem k tomu, že Base mi už chodí, a s Calcem bych začínal opět od nuly (co se znalostí týká, data bych samozřejmě převedl), tak zatím asi zůstanu u Base a snad ze zájmu zkusím s Calcem koketovat. Čas ukáže. Prvotně ale prostuduji odkazy na makra, které jste mi poslal - zatím mi to připadá jako schůdnější cesta a rychlejší cesta.

Offline

#10 6. 4. 2016 16:35:45

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

V jakém formátu máte ta data? Nejspíš je lze načít Calcem, nebo spíš schránkou a vložit jako RTF (lze to vykopírovat jako HTML a snad ještě jinak).
     Horší by byly Formy, ale ty jsou stejně asi předimenzované a bude potřeba nějaké úpravy. Samozřejmě je to na Vás. Dokonce možná díky Vám získáme nějaké zkušenosti. Já k takové práci nemám chuť ani čas. Do databází zasahuje jen minimum lidí. V Calcu jsou asi tak 3 poměrně aktivní přispivatelé. Jinde je to horší. Base je na tom úplně nejhůř. To je ode mne spíš výmluva ale měla to být omluva :-)


Takže přeji úspěch.

Editoval neutr (6. 4. 2016 16:38:31)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#11 8. 4. 2016 14:16:36

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: Makro - syntaxe příkazu pro přístup do tabulky databáze - VYŘEŠENO

Tak jsem se dopátral prvního výsledku. Pomohly odkazy na japonské stránky, takže ještě jednou díky za ně.


V zásadě se jedná o sekvenci příkazů pro připojení k databázi a odeslání SQL příkazu. (Tedy nejenom programování Basicu, ale taky programování SQL) Příkazy pro připojení k databázi uvedu také, aby byla zachovaná návaznost pro případné zájemce.


Dim oBaseContent
Dim oDB
Dim oCon
Dim oStmt 
Dim oSQL2 as String
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oTempName = ConvertToUrl("C:\Data\Kusovník.odb")
oDB = oBaseContext.getByName(oTempName)
oCon = oDB.getConnection("", "")
oStmt = oCon.createStatement()


Po připojení už pak jenom stačí pomocí příkazů pro sestavení strigu správně definovat SQL příkaz. Tedy např. příkaz


UPDATE "Kusovnik_R1" SET "Rozpad_ID"='158' WHERE "R1_ID"=1 sestavíme tímto basic příkazem


oSQL2 = "UPDATE " & Chr$(34) & "Kusovnik_R1" & Chr$(34) & " SET " & Chr$(34) & "Rozpad_ID" & Chr$(34) & "='158' WHERE " & Chr$(34) & "R1_ID" & Chr$(34) & "=1"


A pak už jenom tento string (SQL příkaz) odešleme a na to je následující syntaxe:


oStmt.executeUpdate(oSQL2)



Takže problém se rozpadl na dva podproblémy. Za prvé - správně sestavit SQL příkaz - znalost SQL jazyka. Za druhé - za pomocí příkazů basicu pro práci s řetězci tento příkaz správně sestavit do stringu a odeslat.

Úprava všech formulářů sice zabere nějaký čas, ale cesta je jasná a už je to jenom o trpělivosti :-)

Offline

Zápatí