html rapport weergeven of printen

Uitvoer kan je eenvoudig doen in html-bestanden, die je lokaal schrijft en opent met een browser.

Daarvoor moeten we een bestand openen (een nieuw bestand maken) om in te schrijven, tekst naar het bestand schrijven, en het bestand sluiten.

Maak een module met alle printonderdelen, en met bovenaan

PUBLIC bToPrint AS Boolean

PRIVATE hFile AS File

schrijf een bestand

OPEN sFilename FOR WRITE CREATE AS #hFile
pushHeader(bToPrint)

dat je begint met een kop die zo gemaakt wordt:
( de < en > tekens moeten natuurlijk aansluiten zonder spaties in je code)


PUBLIC SUB pushHeader(bToPrinter AS Boolean)
'
PRINT #hFile, " < html > "
PRINT #hFile, " < head > < title > " & Application.Name & " - by " & User.Name & " < /title > < /head > "
PRINT #hFile, " < body topmargin='0' leftmargin='0' fontsize='1'" ' IF (bToPrinter) THEN DEBUG "To printer ..." PRINT #hFile, " onload='window.print()'" ' only works when java is on ENDIF ' PRINT #hFile, " > "
'
END

Daarna stuur je alle gegevenslijnen, eventueel in de vorm van een tabel, en sluit je het af met een “footer”

PUBLIC SUB pushFooter()
'
PRINT #hFile, " < br > < font size='1' > " & "FACS " & Application.Version
PRINT #hFile, " < i > via " & MCommon.sReportDir & " "
PRINT #hFile, "by " & User.Name & "." & System.Host & " at " & CStr(Date(Now())) & " - " & Left$(CStr(Time(Now())), 5)
PRINT #hFile, " < /i > "
PRINT #hFile, " < /font > "
PRINT #hFile, " < /body > "
PRINT #hFile, " < /html > "
'
END

Bestand afsluiten met CLOSE na het vullen:


pushTableHeadwSub(sTitle, arrColNames, sSql, arrColTotals)
pushTableLines(resCostcode, arrColTotals)
pushTableFooter()
pushFooter()

CLOSE #hFile

Als de volledige bestandsnaam met het volledige pad in de variabele sFilename zit, bv:

sFilename = “/home/mijnnaam/Documents/ToPrint/test.html”

dan kan je de pagina openen in een browser:


EXEC ["konqueror", sFilename]
EXEC ["firefox", sFilename]

(dit is in de KDE omgeving uitgevoerd – Gnome heeft bv geen konqueror standaard geïnstalleerd)

Universele product selectie op scherm

Ik ben op zoek naar een manier om een redelijk “universeel” inzetbare productselectie te doen op het scherm.
Voorlopig denk ik aan:

  • Het scherm toont een aantal knoppen om produkten te kiezen
  • produkten komen uit databank
  • aantal produkten ligt niet vast (dus aantal knoppen niet op voorhand bekend)
  • hoeveel produkten op scherm tonen? Wijzigbaar aantal?
  • – tonen per categorie; bovenaan reeks “indruk”-knoppen met produktcategoriën (naam); ingedrukt = lichter; geen ingedrukt= alle, ander indrukken = eerste uit of bijkomend?? dan is “alle” knop nodig (misschien [*])
  • een knop per produkt, met produktnaam of afbeelding
  • een display waar informatie over de selectie komt
  • een methode om er een “aantal” selecties aan te koppelen?
  • een aktie-log in de vorm van een “rolletje” vgl kassa’s?

Ik drop de testversie voorlopig hier: upload.noxqs.org/ProductSelect
Continue reading

Gambas 2.17 in openSUSE 11.2

Installatie van Gambas in de (huidig nieuwe) openSUSE 11.2 met KDE4 4.3.1
(log van installatie en variatie daarop onderaan)

– Installeer openSUSE met KDE. Bij de installatie heb ik ook heel wat “development” aangevinkt omdat ik toch weet dat daar veel van nodig is.

– Start Software installation (van yast)
Menu “Configuration”: Repositories.

Voeg toe met “Add”, Specify URL …

Geef een voor jezelf begrijpbare naam als “Gambas gbvalor”, en plak daaronder bij “URL”:

http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.2/

Bevestigen. (Ik kan hier nog geen gambas vinden met de zoek functie in Yast).
Blijkbaar is gambas (nog) niet aanwezig. Als je via de browser gaat kijken zie je dat gambas2 niet in de opgegeven directory maar wel in /repositories/home:/gbvalor/openSUSE_Factory/i586
staat. Je kan een “edit” doen op de bestaande en daar
openSUSE_Factory zetten ipv openSUSE_11.2. Daarna verschijnt in de zoek wel gambas2 2.17 bij yast software install.

Ofwel:
Start Yast, kies “Package Search”, tik “gb”, klik “Search”. Hier krijg je een andere repositorie aangeboden voor gambas:

Repository URL: http://packman.iu-bremen.de/suse/11.2

Of ook: zoek “gambas” dan krijg je:

http://download.opensuse.org/repositories/Education/openSUSE_11.2
(deze laatste gambas versie 2.17)

Bij de zoek naar “gambas” krijg je een hele reeks gambas2 paketten aangeboden; selecteer ze allemaal.

Ik kreeg alleen een foutmelding op gambas2-gb-corba, wat ik uitschakelde.

Bevestig de extra paketten die yast voorstelt (zoals unixobdc enz).

Je hebt nu gambas 2.17 van oktober 2009, terwijl 3 in ontwikkeling is bestaat ook een recentere 2.18 sinds november 2009.

In het menu is Gambas nog niet te vinden waar ik het verwacht (bij Development, IDE), dus zelf toevoegen maar. Opstarten gaat met “gambas2”.


Update 9/12/2009

Wel automatische menu-integratie
In een andere installatie van openSUSE 11.2 vertrok ik van de live KDE image om te installeren. Ik deed een zoek op Gambas2 en installeerde met automatische toevoeging van de “educational” repository, ook Gambas 2.17 trouwens, net als hierboven.

Verschillen:

1) In de ongewijzigde menu-struktuur komt onder

  • Applications
  • – Development
  • – – “Basic Development Environment” te staan, met als mouseover: “integrated Environment (Gambas2)”

2) De “corba” component geeft geen probleem, wordt gewoon mee geïnstalleerd.

Foxpro timestamp data leesbaar maken

Een uit Foxpro ingevoerde tabel bevat een kolom met “timestamps”; het is een getal dat in Foxpro gebruikt wordt om te kijken in welke volgorde de records gemaakt (of gemanipuleerd) werden; een vergelijking tussen de getallen levert een aantal seconden verschil op. Hoe dit getal bruikbaar maken, bv door het naar een leesbare datum om te zetten?

Bv: het getal : 487768695 zou op het moment van bewaren het het aantal seconden voorstellen dat verstreken is sinds Foxpro’s referentietijd, een soort seconde nul in het begin van 1980.

Seconden naar minuten -> uren -> dagen: getal / (60 x 60 x 24)

Hier komen de Visual Basic Compatibility functies goed van pas. Je moet dan eerst bij Project, Properties, tab Components gb.vb aankruisen!

De component gb.vb bevat maar een paar functies, niet toevallig met datumfuncties, en meer bepaald om tijd bij te tellen of af te trekken van een datum:

DateAdd DateDiff Left Mid Right Round Str Val

DateAdd vereist de aard van wat erbij geteld wordt (dag), bij te tellen getal, begindatum:

vb.DateAdd("d", Round(db.fldTimestamp / (3600 * 24), 0), Date(1980, 1,1)

Ik probeerde het eerst met seconden maar daar moet ik iets gemist hebben, want dat gaf niet het juiste resultaat:

txlbUpdated.Text=Str$(vb.DateAdd("s", db.fldTimestamp, Date(1980, 1,1))

om weer te geven op het scherm in een programma.

Gambas in OpenSuse 11.1

Ik heb al een repository gevonden in de gbvalor reeks:

http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.1/i586/

Toevoegen in het pakketbeheer (repository) in Yast2: in 1 keer plakken werkte niet (mogelijk vanwege de : in de url) dus opdelen ongeveer zo:

  • protocol http
  • server download.opensuse.org
  • directory repositories/home:/gbvalor/openSUSE_11.1/i586/

Bevestig de digitale sleutel van dit repository.

Zoeken naar software in Yast:

Zoek : “gambas2”

Een hele lijst met gambas2 onderdelen verschijnt. Klik rechts, select all.

Installeer; bevestig de afhankelijkheden (dependencies).

Resultaat:
Software menu, Development, gambas2 start Gambas 2.14

Update mei 2010:
* Aangezien dit de laatste openSuse versie is met de KDE 3.5 zou je voor deze versie kunnen kiezen, bv door een installatie van een net-install iso die je alsnog afhaalt van de opensuse site.
Als je na installatie in de repositories de “openSuse-Education” repository kiest, krijg je gambas versie 2.13 geïnstalleerd.

* Recenter: gbvalor
Ofwel de gbvalor repository toevoegen die ondertussen gambas versie 2.18 heeft:
http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.1
en import de key.
Software management, zoek “gambas2”, de-installeer eventueel oudere versies; selecteer gambas2 nieuwe versie.

Icoon voor je project

  • Default map icon er is een standaard icoon voor gambasmappen; een map gecobineerd met een blauwe garnaal: .icon.png; de naam begint met een punt en is daardoor onzichtbaar. In een eveneens “onzichtbaar” bestand .directory staat het icoon aangegegeven voor deze directory (in KDE):
    [Desktop Entry]
    Icon=./.icon.png

    Blijkbaar: Als er een icoon gekozen is in het project, wordt dit gecombineerd met een standaard map-icoon tot een nieuw waar beide in voorkomen.
  • Er is ook een standaard icoon voor een project; de blauwe garnaalkop.
  • Het icoon kan je kiezen bij menu project, properties; klik op de grote icoon-knop om het icoon te kiezen uit je bestanden.
  • Als je het project compileert vanuit de IDE maakt die een icoon op de desktop aan om het programma te starten; dit icoon wordt daarvoor gebruikt (anders standaard icoon).

Gambas op brighthub

Deze maand verschenen twee artikels over Gambas, in het Engels, op “brighthub.com”:

brighthub.com bevat behalve veel reklame een hele rubriek over linux:
Bright Hub » Computing & Hardware » Linux.

Source archive uitpakken, compileren en draaien

Ik zoek een manier om gemakkelijk een programma in aanpassing bij de gebruiker te installeren.
Programmeur:

  • Maak source archive in de Gambas IDE
  • Upload ergens

Gebruiker:

  • Download bv met wget locatie/archivenaam van ergens het “source archive”.
  • Zet het bestand in de gambas werkdirectory, bv in ~/gambasprj
  • Pak uit bv in terminal met tar -xzvf archivenaam; je krijg een projectdirectory met projectnaam
  • Compileer in terminal met gbc2 -va projectnaam (v=verbose: feedback op scherm)
  • Ps: Run in terminal met gbx2 projectnaam; terminalvenster geeft foutmeldingen weer.
  • Als een “archive” gemaakt wordt met gba2 projectnaam, ontstaat in de projectdirectory het .gambas bestand dat vanuit de grafische omgeving kan aangklikt worden om het programma te draaien

Nog uit te zoeken; script kan het afhalen en compileren doen, icoon op de desktop zou het programma moeten starten. Als gambas zelf een programma compileert in de IDE wordt een icoon op de desktop gemaakt met volgend commando:

‘/home/wig/GambasPrj/projectnaam/projectnaam.gambas’

Gambas in Fedora 10 KDE

Gambas komt voor in het software beheer, maar je moet het vinden…
System, KPackage Kit, Software Management; Find: “gambas2”: levert een lijst op van gambas paketten. Daarin komt gambas2 ide voor. Maar helaas krijg ik de software hiermee niet geïnstalleerd; er is geen selectie + “apply” mogelijk.