Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: FoxPro - rozdělní dat na novou stránku pro tisk

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
miso14.m
Člen
Avatar
miso14.m:10.1.2023 9:35

Ahoj,

potřeboval bych pomoct s tímto programovacím jazykem, zatím využíváme pro tisk protokolu zastaralý databázový systém FOXPRO, než se dokončí nový program v jiném jazyku.

Každopádně se stále využívá a potřeboval bych poradit, jestli někdo nevíte, jak bych měl implementovat s příchozími daty novou stránku pro tisk, jak již do PDF tak do .doc.

Špatně se to vysvětluje, ale momentálně to funguje tak, že po vygenerovaní stránky pdf vidím i čísla, která by již měla být na další stránce respektive jeden soubor by měl vygenerovat čísla pro ten daný soubor na jednu stránku a ne pokračovat dále v číslech na té stálé stránce, ale už by ty čísla měl generovat na další stránce, jelikož obsahuje i důležitý název toho souboru.

Ještě jinak: Natáhnu jeden soubor vytisknu, natáhnu druhý soubor vytisknu, takhle to je správně, pokud natáhnu více souboru, řadí se to pod sebe a pak třeba chybí poslední název hlavičky toho souboru, protože jsou data na předešlé stránce.

Bohužel se v těchto databázích moc neorientuji, ale věřím, že to nebude nic rapidně složitého tento problém nějakým příkazem vyřešit. Bohužel opravdu netuším jak, v příloze foto pdf souboru a barevně označeno. Žlutě by již mělo být na další stránce.

Děkuji za pomoc.

Zdrojový kód:

SELECT * FROM zdvih INTO CURSOR ZdvihSel READWRITE

SCAN
        IF (ABS(zdvih)<HodnotaZdvihu)
                DELETE
        ENDIF
ENDSCAN

SELECT * FROM ZdvihSel INTO CURSOR ZdvihSel READWRITE NOWAIT

IF (RECCOUNT ()!=0)
        LOCAL lnRetval, loXFRX, loListener
        loXFRX = XFRX("XFRX#LISTENER")
        loXFRX.targetType = "pdf"
        loXFRX.targetFileName = "Output.pdf"
        userprofile=GETENV("USERPROFILE")
        JmSestavy=(userprofile)+"\Reports\zdvih"
        loXFRX.targetFileName=(JmSestavy)
        lnRetval = loXFRX.SetParams()

        loListener = newobject('SFReportListenerDirective', 'SFReportListener.vcx')
        loXFRX.Successor = loListener

        IF lnRetval = 0
                IF NOT EMPTY(datum)
                        IF thisform.jazyk.Value=1
                                REPORT FORM (cesta)+"\reports\zdvih.frx" object loXFRX
                        ELSE
                                REPORT FORM (cesta)+"\reports\h_zdvih.frx" object loXFRX
                        ENDIF
                ELSE
                        WAIT "Vyplň, období měření" window
                ENDIF
        ELSE
                ?lnRetval
        ENDIF
ELSE
        MESSAGEBOX("Nejsou hodnoty mimo nastavené meze.")
ENDIF

Zkusil jsem: NEWPAGE - ENDR

Chci docílit: Snažím se dosáhnout nové, aby se jednotlivý soubor generoval na další stránku tisku.

 
Odpovědět
10.1.2023 9:35
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.1.2023 14:38

Fox pro databaze je tabulka, ktera se da otevirat v excelu, ne? Pokud bude nutne, tak si ji ulozit do xls pripony. A tim padem muzes ve wordu pouzit hromadnou korespondeci jako kazda jina sekretarka, ne? A word umi ulozit pdf. Ja myslim, ze makro se na to da udelat i pres Zaznam makra.
Jestli teda nevis, co je hromadna korespondence... Tak, to si pripravis ve wordu sablonu Vytvoris tam nejaka pole. Kam se pak vepisu udaje podle excelove tabulky. Treba se tak tisknou stitky, ktere se lepi na dopisni obalky. Nebo dopisy pro studenty, ze byli prijati na skolu. Behem 5 minut sype tiskarna asi 800 dopisu. A pristi rok znova. Nevim, proc si to komplikujes nejakymi programy, ktere se stejne chystas opustit :)

Editováno 10.1.2023 14:40
 
Nahoru Odpovědět
10.1.2023 14:38
Avatar
miso14.m
Člen
Avatar
miso14.m:11.1.2023 6:43

Ano, děkuji za radu, ale chci to vyřešit v konkrétním programu, nehledám jiné varianty, jak to vyřešit jinde, psal jsem, že se vytváří nový program v jiném prostředí, ale to bude trvat ještě pár let. Na tento program navazují i jiné podpůrné programy, které se otvírají zase jiným programem a tyto data zasílá do foxpro, bohužel to používají i jiní uživatelé, kde je tisíce dat pokaždé jiných. Proto hledám jak jen dosáhnout toho, aby to automaticky program hodil na jinou stránku.. proto si to "komplikuji".

 
Nahoru Odpovědět
11.1.2023 6:43
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.1.2023 7:54

Ok. Obavam se, ze reseni si budes muset zaplatit. A kdo vi, zda sem nekdo takovy chodi. Muzes zkusit tez napsat na forko u stranek https://www.jakpsatweb.cz/ (vic lidi) a http://programujte.com/forum/ (sice lidi skoro nic, ale nekterise tim mozna driv zabyvali)

 
Nahoru Odpovědět
11.1.2023 7:54
Avatar
miso14.m
Člen
Avatar
miso14.m:11.1.2023 7:59

Děkuji za radu. Je to opravdu bývalý relační databázový systém ve kterém se fakt neorientuji a je třeba tento problém vyřešit a je pravda, že bude problém sehnat někoho, kdo se v tom opravdu vyzná. Každopádně zkusím i ty fóra. Děkuji

 
Nahoru Odpovědět
11.1.2023 7:59
Avatar
DarkCoder
Člen
Avatar
Odpovídá na miso14.m
DarkCoder:11.1.2023 11:16

Ve FoxPro, lze použít několik různých metod pro generování obsahu na nové stránce v PDF. Zde jsou některé z nich:

Použití "NewPage" příkazu: Příkaz "NewPage" způsobí, že se začne nová stránka po provedení příkazu. Můžete jej použít na začátku bloku kódu, který chcete zobrazit na nové stránce. Například:

NewPage

Použití "Section" objektu: FoxPro obsahuje objekt "Section", který umožňuje definovat různé sekce v reportu. Můžete vytvořit novou sekci a nastavit její vlastnost "NewPage" na hodnotu "True", aby se obsah této sekce zobrazil na nové stránce. Například:

SectionName.NewPage = .T.

Použití "ForceNewPage" vlastnosti objektu "Label": FoxPro obsahuje objekt "Label", který se používá k zobrazování textu v reportu. Vlastnost "ForceNewPage" určuje, zda se má začít nová stránka po provedení tohoto objektu. Můžete ji nastavit na "True", aby se začala nová stránka po zobrazení textu. Například:

LabelName.ForceNewPage = .T.

Jedná se výstup z OpenAI.

Jinak ohledně dotazů pro FoxPro se můžeš zeptat na fóru:
Tek-tips.com fórum FoxPro

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.1.2023 11:16
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
miso14.m
Člen
Avatar
Odpovídá na DarkCoder
miso14.m:11.1.2023 11:49

OpenAI byla první věc co jsem zkoušel, dokonce mi i implementoval věci přímo do kódu, ale jsou to neúplné informace, protože je části kódu chybí a nezná celý kontext programu a některé funkce FoxPro 9 ani nezná a i já některé věcí nevím kde implementovat, nebo jestli se přímo nachází problém tam, kde ho hledám. Postupně na to přicházím na kloub, ale bude to chtít ještě hodiny a hodiny.
Každopádně díky za to fórum, zkusím to tam.

 
Nahoru Odpovědět
11.1.2023 11:49
Avatar
DarkCoder
Člen
Avatar
Odpovídá na miso14.m
DarkCoder:11.1.2023 11:56

Ano, přechod napříč jednotlivými verzemi FoxPro není zrovna pohodové. Uvedené fórum co jsem uvedl je živé a je tam pro FoxPro velká komunita. Je tak velja šance že dostaneš dobrou odpověď. Určitě se zmiň o verzi jakou používáš.

Nahoru Odpovědět
11.1.2023 11:56
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
miso14.m
Člen
Avatar
Odpovídá na DarkCoder
miso14.m:11.1.2023 12:03

Je to tak, hlavně ta provázanost mezi proměnnýma a soubory je pro mě úplně nesmyslná. Nějaké takové fórum jsem hledal. Děkuji

 
Nahoru Odpovědět
11.1.2023 12:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.