Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 03-01-2006, 05:05
Al Murphy
Avatar van Al Murphy
Al Murphy is offline
Kan mij iemand met een paar (basis?) SQL-dingen helpen?

Ik ben een factuur-template aan het maken. Het onding werkt in OpenOffice.org , dat ik aan een adressenbestandje heb gekoppeld.

Maar die moet nog een paar dingetjes automatisch kunnen doen.
1) Wanneer ik een nieuwe factuur open (dus, via de template) wil ik dat er automatisch (of door op een knopje te duwen) ook een factuurnummer aan wordt toegewezen. Logischerwijze is dit een ophoging van de vorige factuurnummer.
-> prima idee lijkt me om een database bij te houden die een aantal dingen registreert: factuurnummer, factuurdatum, totaalbedrag.
2) Ahv dat factuurnummer wordt ook automatisch de bestandsnaam voor de factuur aangemaakt. Bijvoorbeeld: factuur<huidig_factuurnummer>.odt
3) Hoe kan ik dat zodanig automatiseren, dat wanneer ik mijn factuur opsla, dat hij dan het totaalbedrag uit mijn 'table' kan halen, en dat bedrag in de database erbij schrijft?

Alvast bedankt voor de info.
__________________
Let's fantasize a revolution
Met citaat reageren
Advertentie
Oud 03-01-2006, 11:18
Verwijderd
Het is makkelijker om alle factuurgegevens alvast in de database te zetten, zodat je in OpenOffice alleen maar een factuurnummer hoeft in te vullen en dat je dan alle informatie bij dat nummer ziet.
Met citaat reageren
Oud 04-01-2006, 10:27
Al Murphy
Avatar van Al Murphy
Al Murphy is offline
@eddie: ik bedoelde het eigenlijk net andersom. Als er een klant voor je neus staat, is het niet zo interessant om even in een facturenmap te moeten gaan opzoeken wat het volgende factuurnummer zou moeten zijn.

Verder heb je wel gelijk, dat het gemakkelijker werkt om in één klap volledig database-gestuurd te gaan werken, maar tegen dat ik zoiets met mijn gebrekkige kennis aan het werk heb gekregen... ik denk dat ik het beter stap voor stap doe, en in de loop van de tijd dingen die nu nog handmatig ingegeven worden uiteindelijk een beetje automatiseer en optimaliseer.

1) Maar ik heb het dmv een macro (bij openen van een nieuwe factuur) opgelost.

sDateiName = ConvertToURL("C:\...\FACTURATIE\re-nummer.txt")
Dim iDateiNr as Integer
iDateiNr = FreeFile
Open sDateiName for Input Lock Read Write As #iDateiNr
Line Input #iDateiNr, sNr
Close #iDateiNr
iDateiNr = FreeFile
Open sDateiName for Output as #iDateiNr

iNr = CInt(sNr) + 1
Write #iDateiNr, iNr
Close #iDateiNr

oDok = ThisComponent
oBM = oDok.getBookmarks().getByName("Re_Nr")
oBM.getAnchor().String = sNr


Waarschijnlijk volgt hier nog snel een kleine aanpassing, zodat ook de datum mee in het factuurnummer wordt opgeslagen. Maar nog geen idee hoe ik dat precies zou kunnen doen. Iemand?

2) Ahv die eerste macro kan hij dan ook de factuur opslaan.
Kan dit ook als pdf opgeslagen worden?

Sub Main
sDateiName = ConvertToURL("C:\Documents and Settings\...\FACTURATIE\re-nummer.txt")

Dim iDateiNr as Integer
iDateiNr = FreeFile
Open sDateiName for Input Lock Read Write As #iDateiNr
Line Input #iDateiNr, sNr
Close #iDateiNr
Msgbox "Gelezen:" & sNr
sPath = "C:\Documents and Settings\...\FACTURATIE\archief\"
sFileName = sNr
if Len( sFileName ) > 0 then
sFileName = sPath & sFileName & ".odt"
if FileExists( sFileName ) then
msgbox "Bestand met als naam" & CHR(13) & _
sFileName & _
CHR(13) & "bestaat al, en kon niet automatisch opgeslagen worden", _
48, _
"bestaat al, en kon niet automatisch opgeslagen worden"
else
ThisComponent.StoreToURL( ConvertToURL( sFileName ) , Array() )
msgbox "OK"

end if
else
Msgbox _
"Handmatig opslaan"
end if

End Sub


3) Hiervoor heb ik nog niet echt een oplossing kunnen bedenken. Ten eerste omdat ik niet weet hoe je twee macro's aan één event kan koppelen. En anderzijds weet ik niet hoe je info uit een Writer-bestand kan goochelen.
__________________
Let's fantasize a revolution
Met citaat reageren
Oud 04-01-2006, 12:17
Verwijderd
Gebruik dan Base. Als het goed is kun je hiermee ook formulieren maken.

Wat jij wilt komt er in de richting van een 'applicatie', en dit maak je niet even via macro's.
Met citaat reageren
Oud 04-01-2006, 13:33
Al Murphy
Avatar van Al Murphy
Al Murphy is offline
Citaat:
eddie schreef op 04-01-2006 @ 13:17 :
Gebruik dan Base. Als het goed is kun je hiermee ook formulieren maken.

Wat jij wilt komt er in de richting van een 'applicatie', en dit maak je niet even via macro's.
Ik zal je advies proberen te volgen, maar besef je hoe een beginneling ik ben als het gaat over databases aanmaken?
De reden dat ik nu nog hoofdzakelijk via een tekstverwerker en wat spreadsheets werk, is dat mijn applicatie niet helemaal functioneel moet zijn voordat ik hem kan gebruiken. Adresgegevens haalt hij al uit mijn nooby database, maar veel dingen lopen nog manueel, omdat ik niet alles in een keer kan maken.

En in Base loop ik nu al anderhalve dag mijn hoofd te breken hoe hij mijn mooie postcode-tabel aan mijn adressen-tabel kan koppelen.
Waarschijnlijk heb ik dan queries nodig in de aard van SELECT plaats FROM postcodetable WHERE postcode IS adressentable.postcode; en dat moet hij dan bij adressentable.plaats invullen
Een simpele form maken lukt me in principe ook wel, maar dan wordt het weer lachen, omdat ik wil dat als (IF) de (pseudo-)sleutelgegevens (naam, voornaam, postcode) al in de tabel staan, dat hij dan automatisch de juiste gegevens uit die adressen-tabel haalt (UPDATE?), en als dit nieuw blijkt te zijn (ELSE) dat hij dan 'gewoon' een nieuw (INSERT INTO adressenbestand VALUES ...) record aanmaakt. Zoiets?
Maar in de praktijk weet ik niet of dit de juiste werkwijze is, en twijfel ik nog of ik dit wel klaar ga krijgen.

Maar om even op hetgeen ik eerst vroeg terug te komen:
Om met een factuurnummer in Base te werken. Moet ik dan in eerste instantie een simpele table maken (factuurnummer, factuurdatum, totaalbedrag, klantID, bestandsnaamfactuur) en dan en query
ORDER factuurnummertable BY factuurnummer
SELECT factuurnummer FROM factuurnummertable WHERE factuurnummer > ?'alle andere factuurnummers'
INSERT INTO factuurnummertable VALUES (factuurnummer + 1, ?'datum van vandaag', ?'totaalbedrag, dat voorlopig nog steeds niet in een database staat, dus geen idee hoe ik daaraan kom', adressentable.klantID, ?'bestandsnaamfactuur')

Ik weet het even ook niet meer allemaal...
__________________
Let's fantasize a revolution
Met citaat reageren
Oud 04-01-2006, 14:08
Verwijderd
Citaat:
Al Murphy schreef op 04-01-2006 @ 14:33 :
*knip*
Maar om even op hetgeen ik eerst vroeg terug te komen:
Om met een factuurnummer in Base te werken. Moet ik dan in eerste instantie een simpele table maken (factuurnummer, factuurdatum, totaalbedrag, klantID, bestandsnaamfactuur) en dan en query
ORDER factuurnummertable BY factuurnummer
SELECT factuurnummer FROM factuurnummertable WHERE factuurnummer > ?'alle andere factuurnummers'
INSERT INTO factuurnummertable VALUES (factuurnummer + 1, ?'datum van vandaag', ?'totaalbedrag, dat voorlopig nog steeds niet in een database staat, dus geen idee hoe ik daaraan kom', adressentable.klantID, ?'bestandsnaamfactuur')

Ik weet het even ook niet meer allemaal...
fact_nr
fact_datum
klant_id
(evt. bestandsnaam)


Totaalbedrag is niet nodig, aangezien je ook een tabel hebt waar de factuur regels in staat:

regel_nr
fact_nr
product_id
aantal

prijs ligt vast in de producten tabel:

product_id
prodcut_code
product_omschrijving
product_prijs

Om een nieuwe factuurnummer te 'genereren', doe je gewoon het volgende:

select max( fact_nr ) + 1 as nieuw_nr from factuur

bouw een simpel schermpje voor de invoer en je bent klaar.

ofzoiets.
Met citaat reageren
Oud 04-01-2006, 16:53
Verwijderd
maak een nieuwe database en tabel met de Wizard van Base. Kies hierin voor 'Business' en je kan simpelweg voorgedefinieerde tabellen selecteren, zoals 'invoices' en 'invoicedetails'.

simpeler kan haast niet.
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 17:42.