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

#1 8. 3. 2017 10:08:30

lenkaida
Člen
Registrace: 8. 3. 2017
Příspěvků: 6

Tlačítko další

Dobý den,
co se týče databází jsem úplný začátečník. o programování nevím vůbec nic. Základy Base jsme se učili ve škole takže nějaký základ zvládnu. v Práci jsme si nechali od odborníků vytvořit systém na objednávky jenže jim to moc dlouho trvá takže potřebuji dočasně vytvořit něco co by ho nahradilo. vytvořila jsem databázi o pěti tabulkách (objednávka, zákazník, fakturační údaje, adresa zakázky, stroj)ke každé tabulce jsem vytvořila formulář na zadávání dat. Nyní potřebuji vytvořit tlačítko "další" které by uložilo informace z formuláře, formulář zavřelo a otevřelo následující formulář. Poradíte mi prosím jak na to?. Děkuji

Offline

#2 8. 3. 2017 13:28:10

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

Re: Tlačítko další

To by neměl být problém - myslím že jste tazatelka z článků - ale nyní je to sice více popsáno, přes to je potřeba upřesnit. Mám na mysli toto :
Nyní potřebuji vytvořit tlačítko "další" které by uložilo informace z formuláře, formulář zavřelo a otevřelo následující formulář.
1. Rozumíme si v tomto Nyní potřebuji vytvořit tlačítko "další" které by uložilo informace z formuláře.
2. Zřejmě si nerozumíme v tomto : formulář zavřelo a otevřelo následující formulář.


     Formulář podle bodu 1 je zadávací form pro 1 databázovou tabulku. Nyní jde o to, jestli potřebujete do té samé databáze vkládat další záznamy. Trik je jen v tom, že tlačítko VLOŽIT (nebo podobně nazvané) nesmí být typu "OK" protože to zavře form. Chápu že Vám to takto chodí ale neukládá.
     Co není jasné je to jestli potřebujete "tentýž" form otevřít znovu abyste vložila další záznam do stejné databáze (č.1). To by nebylo třeba protože jen změna vlastností tlačítka umožní odeslat (uložit) záznam a vlastní form se nezavírá. Pouze se odešle záznam. Takže po zápisu jednoho záznamu je možné zadat další a zase je zapsat a stále bude zadávací form otevřený.
     Problém je v tom, že pak je nutné vytvořit zavírací tlačítko. Ale to už může být bez další funkcionality - jen s názvem "zavřít" a podobně. Jde to samozřejmě udělat jen na jediné tlačítko, ale musel by se vložit potvrzovací dialog který by se zeptal zda chcete zadávání opakovat. Potom by se mohl skutečně otevřít tentýž dialog.


     Originálně se neobsluhují záznamy makrem ale dotazem respektive pomocí SQL. Makra se používají sice také ale spíš jen na překlenutí nedostatečného SQL. Je pravda že se makra používají pro vkládání záznasmů velmi často. (Není implementovaná plná norma SQL - tuším někdy z roku 92. Lze zadávat jen omezenou funkcionalitu.)


     Takže jde spíš o to zda se má následně otevřít jiný form (obsluhující jinou databázovou tabulku, nebo stejnou databázi jinak - za jiným účelem.) Nesmíte podcenit precizování dotazu. Setkáváme se s tím často. Po vyřešení dotazu tazatel upřesní - že myslel něco trochu jiného, nebo že ještě tuhle něco a v případě jiné ještě něco.
     Obecně největší problémy bývají se zadáváním podobných (odvozených) záznamů. Zdavatel do formu nebo subformu navětví výběry z roletek (seznamů). Tím se několik údajů z nového zápisu takto navolí a zbytek se má opsat z předchozích údajů.


     Takže já bych doporučil vytvořit vhodnou kopii Vaší databáze s fiktivními daty a postnout to sem. K tomu samozřejmě dobrý popis - nejlépe do samostatného .txt souboru který přibalíte do foldru který následně zazipujete a pošlete sem přes "uložto.cz" nebo podobným portálem. Jinak se obávám že se budeme rozcházet v představách a budeme to stále předělávat.
     Je tady několik uživatelů kteří pracují také (nebo i téměř výhradně) v Base a mají to osahané. Já mám například stažené různé vzorové příklady ale podle dosavadního popisu bych nevěděl co by bylo vhodnější.


     Je také stejně dobře možné že dotazem sledujete postupné otevírání formů pro databázi 1, pak 2 .... až 5. databáze. Pak je ale otázka co je to za operace které nejdou udělat naráz a přes to musí být v posloupnosti individuálně.

Editoval neutr (8. 3. 2017 13:29:07)


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

Offline

#3 9. 3. 2017 11:16:11

lenkaida
Člen
Registrace: 8. 3. 2017
Příspěvků: 6

Re: Tlačítko další

Mám databázi rozdělenou do několika tabulek hlavně pro to aby se v tom lépe orientovalo a nebylo toho moc najednou. Potřebuji zajistit aby jsem mohla vyplnit všechny tabulky bez toho aniž bych musela vždy formulář ručně zavřít a otevřít jiný s dalšími informacemi. Např. otevřu formulář "objednávka" vyplním číslo objednávky kliknu na tlačítko další objeví se mi "zákazník" vyplním jméno a kontakt na zákazníka kliknu na "další" objeví se mi "fakturační údaje" vyplním atd. až do vyplnění všech tabulek. Zatím to funguje tak že otevřu tabulku, vyplním údaje, stisknu enter informace se uloží a objeví se znovu stejný prázdný formulář který musím zavřít a otevřít jiný pro zadání dalších dat.

Offline

#4 9. 3. 2017 11:21:10

lenkaida
Člen
Registrace: 8. 3. 2017
Příspěvků: 6

Offline

#5 9. 3. 2017 17:55:36

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

Re: Tlačítko další

Tak jsem se na to díval a pár věcí mi není zřejmé. Především mi připadá že jsou nevhodně postaveny vazby. Zřejmě musíte upřesnit postupy respektive obsluhu databáze. Já se nyní domnívám takto :


1. Databáze FAKTURAČNÍ ÚDAJE slouží pro účtárnu. Potom je asi potřebné přidat kolonku přijato a ukončeno (předáno ap.). Účtárna pak potřebuje ještě nějaké podklady jako materiál, pracovní výkazy a podobně ale to už Vás asi nemusí zajímat. Pokud ale stavíte celý systém tak by to mělo v návrhu být databáze připraveno.
     Z toho plyne že Formulář FAKTURAČNÍ ÚDAJE by se neměl vyplňovat manuálně - měl by se načítat při poslední operaci - například při odevzdání práce. Nevidím ale důvod proč by se to mělo zadávat paralelně - manuálně. Podle mne žádný form z Vaší pozice není potřeba pokud tedy nebude sloužit účtárně pro dodatečné vstupy.


2. ADRESA ZAKÁZKY je mi záhadou. Podle obsahu je to zbytečná duplicita. Chápu spíš že by to měla být databáze s názvem STAV ZAKÁZKY. Do toho by měl přístup provozní element který to vyřizuje (opravuje a podobně). Pak by tam ale mělo být mnohem více položek a vůbec ne nějaké adresy.


PS : Tak mezi tím nám vypadla elektřina - hodinový black out.


3. Databáze STROJ vypadá že jste majiteli strojního parku který půjčujete. To by byly nejspíš speciální dopravní prostředky a zemní stroje, jeřáby, míchačky a podobné věci. Je také možné že děláte subdodávky. Z toho by měly vycházet vazby.


     Takže podle mne by v této fázi měly být vstupem databáze OBJEDNÁVKA, ZÁKAZNÍK a STROJ. primárně se vyplní objednávka která seznamem (nebo ComboBocem) zadá zákazníka - pokud neexistuje tak se musí zapsat samostatně formem. Jinak se jen vybere roletkou.
     Podobně je to se strojem pokud jsou to Vámi evidované stroje (Vaše základní prostředky). Takže základním a většinou jediným zadávacím formrm by měla být OBJEDNÁVKA.


     Ovšem OBJEDNÁVKA potřebuje také více a jiných položek. Zejména datum příjetí, kontakt a možná číslo dokladu kterým se tak stalo. Samozřejmě co je předmětem objednávky a pak teprve nějaký detail popisu. Měl by tam být i kontakt na objednatele. Ti mohou být různí i v rámci stejné firmy.
     Objednávka by měla mít automatické přidělení čísla a datumu + čas + toho kdo přijal podklady (vyhotovil objednávku). Samozřejmě by tam měl být odkaz na právní formu pokud je to pravidelná činnost, nebo odkaz na klasickou, či elektronickou objednávku.


     Takže já jsem vymazal všechny vazby a postavím nové podle Vašich propozic. Jde o to zda tam budou nebo nebudou vazby N:N, M:N, 1:N ři také 1:1.


     Musím ještě dodatm že jsem delší dobu s Base nepracoval a přišla nová verze LO kde už je zřejmě plně implementovaný motor Firebird. Takže jsem zjistil že je rozhraní značně příznivější ale nevím co vše to umí a jak na to.
     Přes to když si vložíte nyní tlačítko tak pravým tlačítkem myši zavolejte kontextovou nabídku a zvolte OVLÁDACÍ PRVEK. Hned na první kartě (tam kde se zadává název) je dole položka volby OBECNÉ > ČINNOST > zde nastavíte snadno co má tlačítko dělat a je tam toho docela dost. A co víc opravdu volby fungují. Dříve tam byly jenom 3 možnosti ale nyní můžete například uložit záznam, zadat nový záznam, odeslat formulář nebo smazat záznam a další věci. Tohle dřív nebylo a tohle je super.


     Upřesněte prosím strom vazeb nebo potvrďte že je to tak jak jsem popsal.

Editoval neutr (9. 3. 2017 19:21:45)


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

Offline

#6 22. 3. 2017 09:27:49

lenkaida
Člen
Registrace: 8. 3. 2017
Příspěvků: 6

Re: Tlačítko další

Takto jak píšete by to fungovalo kdyby jsme byly firma která něco prodává to ale bohužel nejsme. Naše firma se zabývá servisem (opravami) fitness strojů jako jsou třeba běžecké pásy, rotopedy atd.
Databáze Fakturační údaje slouží k vyplnění adresy popř. IČ DIČ aby se tyto údaje mohly následně objevit n faktuře kterou vystavím zákazníkovy.
Databáze Adresa zakázky slouží k vyplnění adresy kam má náš servisní technik jet.
Databáze Stroj slouží k vyplnění informací co má servisní technik dělat tzn. vyplní se například že se jedná o běžecký pás Insportline a že má spálený motor. Technik tak ví že u zákazníka musí vymontovat motor a předat ho na diagnostiku.
Databáze ještě není hotová zatím jen zkouším jaké jsou možnosti. ostatní detaily samozřejmě ještě dodám.

Offline

#7 22. 3. 2017 12:03:54

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

Re: Tlačítko další

Ono není z názvů úplně zřejmé schema. Princip je v tom, že některé data se zadávají jen primátné z jednoho formuláře. Do ostatních databází (spíš do tiskových sestav a dotazů) se jen načítají.
     Snadno stačí udělat chybu v přepisu a už to stroj nepřiřadí - neumí hledat chybně zadané údaje i když by to technicky řešit šlo. Je to složitost na úkor vadného projektu (vhodné jen pro opravy chyb zaběhaného systému - ale ne pro systém nově zaváděný).


     Odtud se samozřejmě odvíjí vazby. Tohle projektují a staví databázoví specialisté. Je to poměrně náročné na abstrakci a když k tomu připočítáte individuální vlastnosti různých databázových strojů dostanete specialisty jen na 1 druh databáze. To podléhá různým "módním" trendům a IT to nechtějí dělat. Naučí se a za pár let jsou bez práce protože jejich systém zastaral. Postavili funkční databáze a mohou je upravovat ale novou nikdo nechce. Kdo by je chtěl živit? .....


     Takže i když Base je vytvořena vstřícně k databázovému "laikovi", není to nic snadného nebo jednoduchého. Vztahy a vazby jsou základem. Jde například o tz. databázovou integritu - vázaná pole musí být stejně definovaná. Nic neukáže kde a jaká chyba to je.
     Takže názvy polí musí akceptovat jednak to, že vazba míří někam ale neměl by to být shodný název. Tam potom vzniká problém odkud kam vazba N:1?


     Z vazeb musí být zřejmé kde se zadávají vstupní parametry (pouze jediný formulář !) proto by mělo být formulářů (formů) co nejméně. Například IČO, Adresa a podobně by měly být jen v jediném formuláři pro zavedení (opravy) klientů. Všude jinde se jen kopírují.
     Pak je zřejmé, při Vašem systému servisu nemusíte stroje zákazníků evidovat. Pokud máte nasmlouvané pravidelné revize u zákazníka mělo (mohlo) by to být v jedné databázi podřízené agendě zákazník. Tam by se vstupovalo novým zápisem jen přes klinta (pravidelný zákazník).
     Specifikace opravy je součástí objednané zakázky a místní nálezy techniků patří do pracovního listu který shromažďuje mistr od výkonných pracovníků v terénu a vytvoří soubor souhrnů který předá k fakturaci včetně položek které neevidujete skladem - pokladnou ap. Mistr tam už nebude nic vyplňovat ve smyslu adresy nebo IČO - bude vyplňovat položky pracovního listu který bere jen účtárna a extrakt pošle zákazníkovi jako dodák.


     Princip "relačních databází" je takový, že co položka to individuální databáze pouze s s položkou unikátním klíčem a jedním nebo více cizím klíčem. Tohle co stavíte není relační systém. Byl by zbetečně složitý ale zásady vazeb dík cizím klíčům byste měla respektovat (akceptovat).


     Celkem jasná potřeba a popis stavu věci - a tak se chci zeptet zda jste koukala na tlačítka a testovala zápis pomocí nich? Já jsem se k testování ještě nedostal jsem v jednom kole. Zde pro Vás budou možnosti akcí ovládacích prvků zcela zásadní. Pak dojde na dotazy a nakonec na makra.


     Nic se neděje - s databází pracuje málo lidí právě kvůli tomu že je málo dokumentace a je to složité. Tohle téma může mnoha lidem pomoci. Takže se nebojte a dávejte dotazy - nikdo učený ....


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

Offline

#8 22. 3. 2017 21:06:15

lenkaida
Člen
Registrace: 8. 3. 2017
Příspěvků: 6

Re: Tlačítko další

Tak myslím že jsem na to přišla. Řešení nejspíš bude jednoduší než se zdálo. Dle mého názoru by mělo stačit vytvořit makro nahráváním a přiřadit ho k tlačítku.

To se udělá kliknutím na "nástroje", "makra", "zaznamenat makro" po té by měl vyskočit formulář kde se makro uloží buď obecně do OpenOffice nebo jen do Base. Po vytvoření se nakliká přesně to co chci tzn. v mém případě zavřu jeden formulář a otevřu další. Pak kliknu na zastavit záznam a makro je vytvořené. Poté je potřeba vložit prázdné tlačítko, kliknout na něho pravým, "ovládací prvek", "události", u položky "uvolněno tlačítko myši" rozkliknout "..." "makro" a vybrat vytvořené makro.

Bohužel jakmile zapnu nahrávání makra OpenOffice mi spadnou a nikdy se nedostanu dál jen se sekne počítač. Asi toho po něm chci moc.

Editoval lenkaida (22. 3. 2017 21:07:17)

Offline

#9 22. 3. 2017 21:19:01

lenkaida
Člen
Registrace: 8. 3. 2017
Příspěvků: 6

Re: Tlačítko další

Tak je to maličko jinak ta tabulka na uložení makra se objeví až po jeho vytvoření.

Offline

#10 23. 3. 2017 10:53:02

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

Re: Tlačítko další

Nevím LenkoIdo jestli budete s nahráváním úspěšná. Záznamník je v Base velice skoupý na to co je možné nahrát. Otestujte tohle makro. Ale prověřte zda ta čísla v nápovědě odpovídají skutečnosti.

Sub OtevriMyFormy
	Dim args(0) As New com.sun.star.beans.PropertyValue
	Dim aFormName as string
		oDoc = ThisDatabaseDocument				
		oFormDocs = oDoc.getFormDocuments()
		aFormName = oFormDocs.getByIndex(0).Name
		'0 = Adresa zakázky
		'1 = Fakturační údaje
		'2 = Stroj
		'3 = Zákazník
		'4 = Objednávka
			args(0).Name = "OpenMode"
			args(0).Value = "open"
	oFormDocs.loadComponentFromURL(aFormName,"_blank",0,args())
End Sub

     Jednoduše najděte číslo formu který chcete konkrétním tlačítkem otevřít a připojte ho na vhodný ovládací prvek (například tlačítko). Tlačítko udělá co má a pak spustí makro. To musíte nastavit tak aby se akce otevření formu uskutečnila až po provedení akce tlačítka ap.
     Tlačítko by mělo shodit stávající formulář a otevřít ten adresovaný - aby byl cyklus otevírání dán konstantně. Tedy Form A, Form B, Form C, Form D :
Form A[Tlačítko] - nejprve provede svou akci (například zápis), shodí svůj formulář + otevře formulář B
Form B[Tlačítko] - nejprve provede svou akci (například zápis), shodí svůj formulář + otevře formulář C
Form C[Tlačítko] - nejprve provede svou akci (například zápis), shodí svůj formulář + otevře formulář D 
Form D[Tlačítko] - nejprve provede svou akci (například zápis), shodí svůj formulář = Konec

Editoval neutr (23. 3. 2017 10:53:24)


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

Offline

Zápatí