FormularProgrammierung_Anfägerhilfe

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: FormularProgrammierung_Anfägerhilfe

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Mi, 15.08.2012 09:21

Hallo DPunch,

Klasse es funktioniert! Toll damit Sind erstmal alle meine fragen geklärt!
Und falls noch was sein sollte, weiß ich ja wo ich die Antworten finden kann ^^

Vielen dank an euch Robert und DPunch ohne eure Tagkräftige hilfe hätt ich das nicht geschafft!
LG Lain

Re: FormularProgrammierung_Anfägerhilfe

von DPunch » Di, 14.08.2012 19:41

Servus

Dem Code fehlt noch eine Schleifenabbruch, nachdem ein Platzhalter ersetzt wurde.
Zudem weist Dein Formular eine weitere heikle Stelle auf, nämlich die Listbox mit verknüpftem Inhalt ("Sachbearbeiter" und "Firma").
Den dort verknüpften "lesbaren" Inhalt gibt das Formular selber nicht her, sondern nur die interne Repräsentation, nämlich die ID des Sachbearbeiters / der Firma.
Dies kannst Du zwar umgehen, indem Du noch eine Abfrage hinterherschiebst, in der auf ein so benamtes Feld prüfst, aber vermutlich deckt dieser Workaround nicht alle Eventualitäten ab, ich weiss es nicht.
Jedenfalls funktioniert es bei diesem Formular (und auch in anderen gleichartig gelagerten Fällen), wenn Du folgendes tust:

-in der Vorlage den Platzhalter "Abfrage_Sachbearbeiter_ausfuehrlich" ändern in "lboSachbearbeiter" und Platzhalter "Integer" in "lboFirma"
-im Formular das Listenfeld "Sachbearbeiter" umbenennen in "lboSachbearbeiter" und das Listenfeld "Firma" in "lboFirma" ("lboSachbearbeiter" sind nur Vorschläg, wichtig ist: Platzhalter und Listenfeld müssen den gleichen Namen haben)
-den ursprünglichen Code durch folgenden leicht modifizierten Code ersetzen:

Code: Alles auswählen

Private aForms()

Sub Main
	oDoc = thisComponent
	oForms = oDoc.Drawpage.Forms
	For i=0 To oForms.Count-1
		collectForms(oForms(i))
	Next i
	REM Pfad zur Vorlage zusammensetzen
	Globalscope.BasicLibraries.loadLibrary("Tools")
	sURL = oDoc.Parent.URL
	sURL = DirectoryNameoutofPath(sURL,"/") & "/"
	sURL = sURL & "Laufzettel.ott"
	REM Vorlage öffnen
	Dim args(0) as new com.sun.star.beans.PropertyValue
	args(0).Name = "AsTemplate"
	args(0).Value = True
	newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
	REM Textfelder holen
	enumTextfields = newDoc.Textfields.createEnumeration   
	Do While enumTextfields.hasMoreElements
	thisTextfield = enumTextfields.nextElement      
	If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
		sColumnname = thisTextfield.PlaceHolder
		For i=0 To UBound(aForms)
			oForm = aForms(i)
			oColumns = oForm.Columns
			If oColumns.hasByName(sColumnname) Then
				nIndex = oForm.findColumn(sColumnname)
				thisTextfield.Anchor.String = oForm.getString(nIndex)
				Exit For
			ElseIf oForm.hasByName(sColumnname) Then
				thisTextfield.Anchor.String = oForm.getByName(sColumnname).CurrentValue
				Exit For
			End If
		Next i   
	End If
	Loop
End Sub

Sub collectForms(baseElement)
	If NOT baseElement.supportsService("com.sun.star.form.component.Form") Then
	   Exit Sub
	End If
	newUpper = UBound(aForms)+1
	ReDim Preserve aForms(newUpper)
	aForms(newUpper) = baseElement
	For i=0 To baseElement.Count-1
	   collectForms(baseElement(i))
	Next i
End Sub

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Di, 14.08.2012 17:39

Hallo an alle,
also, ich habe mal geschaut, aber leider funzt das mit dem Makro zwar, aber halt noch nicht so ganz.
ich kann leider nicht erklären warum, ich habe das Formular "Auftragsbearbeitung" und die Writerdatei "Laufzettel.ott" genau aufeinander abgestimmt,
aber leider wird nur die Kundennummer nicht automatisch ausgefüllt.
Woran es Liegt kann ich leider nicht sagen,
aber auf jeden fall bin ich schon wehsentlich weiter, dank der liebe hilfe von Robert und DPunch, leute vielen dank dafür!!

Liebe grüße Lain
Dateianhänge
TestDB_140812.zip
Makro Test-Datembank
(184.23 KiB) 66-mal heruntergeladen

Re: FormularProgrammierung_Anfägerhilfe

von RobertG » Mi, 01.08.2012 21:05

Hallo Lain,

ich habe mir das Makro angesehen. Mir scheint das für Dein Formular nicht so gut geeignet zu sein. Das liegt daran, dass das Makro nur aus einem Formular die ihm zugrundeliegenden Tabelle mit den entsprechenden Spalten aufsucht:
oForm = oDoc.Drawpage.Forms(0)
oColumns = oForm.Columns
In Deinem Formular(0) steht aber lediglich ein Listenfeld. Da kann das Makro also nur das Listenfeld "Firma" aufsuchen und den Inhalt des Fremdschlüssels irgendwo anders ablegen.
Mir scheint aber, dass Du Inhalte aus den unterschiedlichen Subformularen zusammen ausgeben willst.
Ich kenne mich nicht so besonders mit Makros aus und muss auch immer wieder testen. Gegebenenfalls müsstest Du, um den Inhalt übertragen zu bekommen, alle Formulare gleichzeitig ansprechen:

oForm = oDoc.Drawpage.Forms(0)
oColumns = oForm.Columns
oForm1 = oForm.Forms(0)
oColumns1 = oForm1.Columns
oForm2 = oForm1.Forms(0)
oColumns2 = oForm2.Columns
oForm3 = oForm2.Forms(0)
oColumns3 = oForm3.Columns

Und das dann entsprechend auch in der Schleife erledigen:

If oColumns.hasByName(sColumnname) Then
nIndex = oForm.findColumn(sColumnname)
thisTextfield.Anchor.String = oForm.getString(nIndex)
End If
If oColumns1.hasByName(sColumnname) Then
nIndex = oForm1.findColumn(sColumnname)
thisTextfield.Anchor.String = oForm1.getString(nIndex)
End If
usw.
Jetzt tauchen bei Dir zweimal die Platzhalter "eMail" auf. In lediglich einem Formular ist aber eine E-Mail enthalten. Und dort heißt das Feld (noch) "Textfeld 1".

Mir scheint das zu aufwändig, jetzt Dein Formular dem Makro anzupassen, nachdem das Formular läuft. Schließlich liegt das nicht nur an dem einen gerade genannten Feld.
Du kannst es ja einmal mit den vorgeschlagenen Änderungen durchtesten. Auch wenn der Weg, den das Makro geht, erst einmal bestechend erscheint, so muss er für Dein spezielles Formular mit der Konstruktion Formular → Unterformular → UnterUnterformular → UnterUnterUnterformular nicht unbedingt der einfachste sein.

Gruß

Robert

Re: FormularProgrammierung_Anfägerhilfe

von RobertG » Mi, 01.08.2012 18:17

Hallo Lain,

kannst Du einmal Deinen Entwurf mit dem Report-Builder schicken? Ich mache ganau das, was Du willst, nämlich mit dem Report-Builder. In einer Vereinsdatenbank habe ich ein Schreiben, das an Mitglieder geht, die aus dem Verein austreten. Da klicke ich dann nach Eingabe des Austrittsdatums auf den Button, dann wird ein Brief mit Anschrift, Austrittstermin und gegebenenfalls Rückgabeforderung des Schlüssels für das Vereinshaus erstellt. Ich gebe nur den Primärschlüssel des Datensatzes an eine Abfrage weiter, die dann vom Bericht gelesen wird. Der Bericht erhält also nur über die Abfrage lediglich einen Datensatz.

Noch schneller geht es natürlich mit einem Mailmerge-Makro. Das statet dann gar nicht mehr sichtbar den Serienbrief des Writers, sonder leitet den Druck sofort an den Drucker weiter.

Aber, wie geschrieben, die Sache mit dem Report-Builder ist vom Begreifen her die einfachere Lösung für mich.

Gruß

Robert

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Mi, 01.08.2012 17:37

Hallo Robert,
leider ist der Report-Builder nicht das was ich suche.
Das ganze soll so ablaufen, ich möchte, das bestimmete felddaten, die ich in dem Formular Auftragsbearbeitung eingegeben habe, per schaltflächenklick in eine vorgefertigte druckvorlage eingespielt werden, ohne es selbst alles tippen zu müssen.
bei dem Report habe ich es hinbekommen, das die ausführliche abfrage wider eine Liste erstellt hat, aber keine Druckvorlage, die nur einen Datensatz enthält.
Der sinn der sache soll sein, das man mit einem Klick eine Vorlage öffnet die sich als "Laufzettel" für den speziellen auftrag eignet und direkt ausgedruckt werden kann. Sas Layout des Laufzettels soll die automatisch eingefügten daten des Bestimmten Angebots enthalten, die gerade im Formular eingetragen sind, und eine Tabelle die per Hand gefüllt werden kann. Dieser Laufzettel soll auf einer auftragstasche befestigt werden und muss daher handschriftlich ergänzt werden können.
Ein nerviges unterfangen nicht wahr ^^ danke für deine hilfe, das ist wirklich toll von dir!

Liebe Grüße Lain

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Mi, 01.08.2012 16:51

Hallo Robert,
die erweiterung habe ich mir besorgt und experimentiere damit jertzt etwas rum. Mal sehen ob es das ist was ich brauche ^^
Kann man über eine schaltfläche im formular auch ein berichtsfenster öffnen, dem man dann den druckbefehl erteilen kann?

Liebe Grüße Lain

Re: FormularProgrammierung_Anfägerhilfe

von RobertG » Mi, 01.08.2012 14:41

Hallo Lain,

wenn Du wirklich nur einen Zettel brauchst, der Dir irgendwelche Auflistungen machst: Warum benutzt Du nicht den Report-Builder? Für OpenOffice steht der als Erweiterung zum Download, bei LO ist diese Erweiterung fester Bestandteil.

Das Makro werde ich mir einmal ansehen, obwohl die Alternative direkt in die *.odb-Datei integriert wäre.

Gruß

Robert

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Mi, 01.08.2012 10:55

Hallo Robert,
wie immer hattest du vollkommen recht, das textfeld muss nicht so groß sein, die umstellung ist schon gemacht. Und auch das problem mit der unsichtbarkeit des Tabellen-Feldes im Feldhinzufügen-Fenster hatte sich nach einem neustart der DB gelöst ^^

Jetzt habe ich noch Problem. Ich möchte gern Daten aus dem Formuar "Auftragsbearbeitung" in eine Writer-Datei übertragen, natürlich habe ich dafür schon im Forum gesucht und auch einen vielversprechenden eintrag mit einem Makro gefunden. Ich habe alles vorbereitet und einen versuch gestartet, aber leider ist nichts geschehen, eine antwort vom Verfasser habe ich leider nicht erhalten.
Wahrscheinlich habe ich mal wider was wichtiges übersehen ^^

Vielen lieben Dank!!
Gruß Lain
Dateianhänge
Test.zip
Datenbank BSP Makro-problem
(167.37 KiB) 86-mal heruntergeladen

Re: FormularProgrammierung_Anfägerhilfe

von RobertG » Mo, 30.07.2012 17:21

Hallo Lain,
Lain hat geschrieben:Ich hatte gedacht, das eine kurze Beschreibung des Auftrages angebracht wäre, ich hatte versucht einen Tabelleneintrag (memo) zu erstellen und die Felder im Formular über den Feld-Navigator einzupflegen, aber das Feld wird garnicht in der Liste angezeigt, muß ich die Tabelle noch mal neu in beziehung setzen?
Zuerst einmal zu der Feldwahl: Der Feldtyp "Memo" ist für sehr große Textmengen gedacht. Der maximal zu erreichende Inhalt wird nicht begrenzt. Da kannst Du also Romane drin abladen (max. 2GB!). Ich habe das jetzt nicht mehr in Erinnerung, ob es bei der internen HSQLDB auch so ist - aber bei anderen Datenbanken wurde früher ein ähnlicher Datentyp von den normalen Sortier- und Suchfunktionen ausgeschlossen.
Text ("VARCHAR") hatte früher einmal eine Begrenzung von 255 Zeichen (was für eine kurze Beschreibung sicher reicht - bei Schreibmaschinen kamen ca. 70 Zeichen in eine Zeile ...), aber auch diese Begrenzung ist wohl mittlerweile aufgehoben. Zumindest kannst Du aber eine Grenze festlegen.

Und jetzt zur Position, an der Du dieses Feld in dem Formular einfügen musst. Ich habe dafür einmal das Formular "Auftragsbearbeitung" zum Bearbeiten geöffnet und dann auf den Formularnavigator geklickt, um den gesamten Formularbaum sichtbar zu machen. Das Formular, in dem die Erinnerung untergebracht werden muss, ist das dritte Unterformular mit dem Namen "Auftrag". Du kannst das Formular markieren und ein Textfeld hinzufügen. Dann wählst Du bei den Eigenschaften → Daten das entsprechende Feld aus. Das Feld muss dort zur Verfügung stehen, wenn es in der Tabelle "Auftrag" enthalten ist. Die Abfrage bezieht sich schließlich mit "Auftrag".* auf den gesamten Inhalt dieser Tabelle, auch neue Felder.

Gruß

Robert
Dateianhänge
Formularnavigator.png
Formularnavigator.png (58.67 KiB) 2041 mal betrachtet

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Mo, 30.07.2012 14:46

Hallo Robert,

Danke für die rasche hilfe, jetzt hab ich den fehler versanden, ich hatte den Code im Feld falsch angegeben und "Auftrag Erteilt" nicht als Alias Gesetzt.

mir ist jetzt etwas neues aufgefallen. Ich hatte gedacht, das eine Kurze beschreibung des Auftrages angebracht wäre, ich hatte versucht einen Tabelleneintrag (memo) zu erstellen und die Felder im Formular über den Feld-Navigator einzipflegen, aber das feld wird garnicht in der liste angezeigt, muß ich die Tabelle noch mal neu in beziehung setzen?
Oder sollte das garnicht in den Tabellen hinterlegt weden, sondern genau wie das "Auftrag Erteilt" nur in der Abfrage?

Gruß Lain

Re: FormularProgrammierung_Anfägerhilfe

von RobertG » Mo, 30.07.2012 12:18

Hallo Claudia,
Lain hat geschrieben:
RobertG hat geschrieben:

Code: Alles auswählen

CASE WHEN "Auftrag"."Abschluss-Datum" IS NULL THEN FALSE ELSE TRUE END AS "Auftrag erteilt", CASE WHEN "Auftrag"."Zahlungseingang-Datum" IS NULL THEN FALSE ELSE TRUE END AS "Gezahlt" FROM "Auftrag"
...Damit werden die Ja/Nein-Felder für den Auftrag und für den Zahlungseingang überflüssig...
Meinst du damit das die Ja/Nein-Felder aus der Tabelle gelöscht werden können, oder wenden die nur Automatisch auf ja oder nein gesetzt.
In der Theorie habe ich den Code verstanden, aber mir bereiten die Teile "Auftrag erteilt" und "Gezahlt" kopfzerbrechen...Soll das in einem Textfeld ergenzt werden?
Ja, die Felder können gelöscht werden. Es wird nachgesehen, ob das Abschlussdatum leer ist. Enthält es keinen Wert, so wird das "FALSE" eines Ja/Nein-Feldes zurückgegeben. Enthält es einen Wert, so erscheint das "TRUE" (also: Ja). Mit AS "Auftrag erteilt" weise ich dem entstehenden Feld einen Namen zu. Das bedeutet, dass Du dieses Feld als Ja-Nein-Feld "Auftrag erteilt" angezeigt bekommst.
...
Du hast aus irgendeinem mir erst einmal nicht ersichtlichen Grund eine Fehlermeldung von Deinem OpenOffice bekommen. Bei mir funktioniert das einwandfrei, auch mit OOo 3.3. Ich hänge einfach die Datei mit den Änderungen (bis auf die Löschung der Felder in der Tabelle) noch einmal an. Ich habe die Felder in dem Formular jetzt mit den entsprechenden Feldern aus der Abfrage verknüpft. Die vorherigen Ja/Nein-Felder sind also nicht mehr nötig.

Gruß

Robert
Dateianhänge
TestDB_Auftragsbearbeitung_2.odb
(91.89 KiB) 86-mal heruntergeladen

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Mo, 30.07.2012 10:55

Hallo Robert,
ich hoffe du hattest ein angenehmes Wochenende!
RobertG hat geschrieben:

Code: Alles auswählen

CASE WHEN "Auftrag"."Abschluss-Datum" IS NULL THEN FALSE ELSE TRUE END AS "Auftrag erteilt", CASE WHEN "Auftrag"."Zahlungseingang-Datum" IS NULL THEN FALSE ELSE TRUE END AS "Gezahlt" FROM "Auftrag"
...Damit werden die Ja/Nein-Felder für den Auftrag und für den Zahlungseingang überflüssig...
Meinst du damit das die Ja/Nein-Felder aus der Tabelle gelöscht werden können, oder wenden die nur Automatisch auf ja oder nein gesetzt.
In der Theorie habe ich den Code verstanden, aber mir bereiten die Teile "Auftrag erteilt" und "Gezahlt" kopfzerbrechen...Soll das in einem Textfeld ergenzt werden?
RobertG hat geschrieben:Du könntest so beliebig viele Mahnungen verschicken, bevor das letzte Datum "Inkasso-Datum" vollzogen wird. Das ist in sofern universeller handhabbar, als wirklich jeder Mahnschriftverkehr festgehalten wird und nicht eben nur drei Datumswerte mit unterschiedlicher Benennung.
Da hatte ich ja schon geschrieben das es wirklich nur die 3 Stufen des Mahhnverfahrens sind, lohnt es sich da für die 3 schritte eine eigene Tabelle aufzumachen?
RobertG hat geschrieben:Da hatte ich dann eine Tabelle mit fortlaufenden Datumswerten und Zahlenwerten. 5 Tage aufwärts war: Startdatum nachsehen, Wert daneben auslesen, 5 addieren, Ergebnisdatum nachsehen.
Mittlerweile würde ich so etwas mit DateADD() über Makros realisieren. Allerdings ist es mit dem Kalender in Datumsfeldern doch recht einfach, eben einmal 2 Wochen Zahlungsfrist nachzuvollziehen. Ein per Makro ermittelter Wert könnte natürlich geändert werden. Er würde nur dann geschrieben, wenn keine Zahlungsfrist vorgegeben wurde - also bei einem leeren Feld.
Also ich bin auch der meinung, das es eigendlich relativ einfach ist 2 Wochen fristen manuell anzugeben, bei zeiträumen ab einem Monat lohnt es sich erst richtig, des wegen können wir das getrohst außen vor lassen. Villeicht später mal, wenn ich die hürden der noob-heit überwunden habe :lol:

Liebe grüße Claudia
Dateianhänge
Fehlermeldung bei Codeeingabe
Fehlermeldung bei Codeeingabe
Bildschirmfoto 2012-07-30 um 10.39.18.png (102.8 KiB) 2080 mal betrachtet

Re: FormularProgrammierung_Anfägerhilfe

von RobertG » Fr, 27.07.2012 17:56

Hallo Lain,
Lain hat geschrieben:Also die Ja/nein felder sind wirklich nur dazu da, damit man schnell sehen kann, das der auftrag/rechnung abgeschlossen ist, damit man nicht lange aufs datum gucken muss.
diese Felder sind wirklich nur dazu da, den Status auf einen Blick ersichtlich zu machen.
Also würde das Folgende reichen:
In der von mir angehängten Datenbank war eine Abfrage "Abfrage_AuftragNr_RechnungNr". Diese Abfrage erstellt aus der "Auftrag"-Tabelle nebenher die Auftragsnummer und die Rechnungsnummer und ist Grundlage für das Formular "Auftragsbearbeitung". ich habe die Abfrage hier einmal ergänzt:

Code: Alles auswählen

SELECT "Auftrag".*, 'AU-' || CONVERT ( YEAR( "Auftrag"."Auftrag-Datum" ) , CHAR ) || '-' || CONVERT ( "Auftrag"."Angebots-Nr." , CHAR ) AS "Auftrag-Nr.", 'RE-' || CONVERT ( YEAR( "Auftrag"."Rechnung-Datum" ) , CHAR ) || '-' || CONVERT ( "Auftrag"."Angebots-Nr." , CHAR ) AS "Rechnung-Nr.", CASE WHEN "Auftrag"."Abschluss-Datum" IS NULL THEN FALSE ELSE TRUE END AS "Auftrag erteilt", CASE WHEN "Auftrag"."Zahlungseingang-Datum" IS NULL THEN FALSE ELSE TRUE END AS "Gezahlt" FROM "Auftrag"
Der Start mit "Auftrag".* stellt die gesamte Tabelle "Auftrag" dar. Anschließend werden "Auftrag-Nr." und "Rechnung-Nr." erstellt. Mit den || werden Felder oder auch Textinhalte verbunden. Da es sich um Textinhalte halten soll, habe ich aus dem Jahr und der Angebotsnummer einfach Text erstellt und entsprechend verbunden. Diese Felder hast Du schon, auch in dem Formular - dort dann als schreibgeschützt, werden also nur dargestellt.
Anschließend wird mit CASE WHEN nachgefragt, ob das "Abschluss-Datum" leer ist (IS NULL). Wenn es leer ist, dann wird in einer Checkbox "FALSE" (also Nein, nicht angekreuzt) angegeben, wenn es gefüllt ist, dann wird "TRUE" angegeben. Damit werden die Ja/Nein-Felder für den Auftrag und für den Zahlungseingang überflüssig. Die Eigenschaft kannst Du in dem Formular aus diesen Feldern lesen. Du brauchst also nichts anzuklicken und läufst damit auch nicht die Gefahr, das einmal zu vergessen und plötzlich eine Erinnerung zu schicken, weil eben das Ja/Nein-Feld nicht gefüllt war.
Lain hat geschrieben:Zu deinen anmerkungen in der Tabelle Auftrag: das mit dem Boolean hab ich ja schon erklärt. Und das Mahnverfahren muss leider mit berücksichtigt werden, die daten sind dazu da nachvollziehen zu können, wann die einzelnen schritte unternommen wurden.
Du hast für das Mahnverfahren 3 Datumsfelder in der Tabelle. In dem Bibliotheksprogramm, das dem Handbuch Base beiliegt, habe ich auch 3 Mahnmöglichkeiten. Nur ist dieses Verfahren ausgegliedert. Es gibt dann eine Tabelle, die nur die Angebotsnummer und ein Datum speichern würde. Das erste Datum wäre die Erinnerung, das 2. Datum die erste Mahnung ... Du könntest so beliebig viele Mahnungen verschicken, bevor das letzte Datum "Inkasso-Datum" vollzogen wird. Das ist in sofern universeller handhabbar, als wirklich jeder Mahnschriftverkehr festgehalten wird und nicht eben nur drei Datumswerte mit unterschiedlicher Benennung.
Lain hat geschrieben: Wegen der berechenbarkeit der Datums-Angaben, ist es möglich das den wert in dem Summenfeld nach der automatischen berechnung noch zu verändern (z.b. wenn z.b. ein kunde vereinbart, das er erst später zahlt)?
Die Berechnung so eines Datums im Voraus ist leider mit den Mitteln der mitgelieferten HSQLDB nicht möglich. Andere Datenbanken, auch die aktuelle Version der frei verfügbaren HSQLDB, haben so eine Funktion wie DATE_ADD(). Mit der eingebauten Datenbank kannst Du zwar den Unterschied zwischen zwei Datumswerten über DATEDIFF() ausrechnen - in allen möglichen Maßeinheiten - aber der umgekehrte Weg geht nicht mit vertretbarem Aufwand - abgesehen davon, dass die Schaltjahre Zusatzprobleme bereiten.
Früher habe ich mir damit geholfen, einfach eine Tabelle zu erstellen, die aus lauter Datumswerten und fortlaufenden Zahlenwerten bestand. Habe dazu einfach Calc benutzt, oben "1" und das gewünschte Startdatum angegeben und dann mit der Autofill-Funktion nach unten gezogen. Da hatte ich dann eine Tabelle mit fortlaufenden Datumswerten und Zahlenwerten. 5 Tage aufwärts war: Startdatum nachsehen, Wert daneben auslesen, 5 addieren, Ergebnisdatum nachsehen.
Mittlerweile würde ich so etwas mit DateADD() über Makros realisieren. Allerdings ist es mit dem Kalender in Datumsfeldern doch recht einfach, eben einmal 2 Wochen Zahlungsfrist nachzuvollziehen. Ein per Makro ermittelter Wert könnte natürlich geändert werden. Er würde nur dann geschrieben, wenn keine Zahlungsfrist vorgegeben wurde - also bei einem leeren Feld.
Ich weiß allerdings im Moment nicht, ob ich das Makro hier irgendwo greifbar liegen habe.

Gruß

Robert

Re: FormularProgrammierung_Anfägerhilfe

von Lain » Fr, 27.07.2012 13:22

Hallo Robert,
du warst wohl schneller als ich ^^ ich war gerade fertig die DB anzupassen, und wollte sie hochladen, als ich gesehen hab, das du das schon gemacht hast.
Aber du hattest vollkommen rech, ich hab schon bei der Vorbereitung einfach zu schwierig gedacht!
Vielen Vielen lieben dank, Klasse!

Also die Ja/nein felder sind wirklich nur dazu da, damit man schnell sehen kann, das der auftrag/rechnung abgeschlossen ist, damit man nicht lange aufs datum gucken muss.
diese Felder sind wirklich nur dazu da, den Status auf einen Blick ersichtlich zu machen.

Das mit dem Listenfeld war die ganze zeit ein problem das ich nicht verstanden habe, nämich wie man den Fremdschlüssel definiert und vorallem wie man die beziehungen des fremdschlüssels richtig definiert!
Ich ja über all versucht es nachzulesen oder nachzuprogrammieren, aber leider bin ich ein mensch, dem man alles so erklärem muss als wer er 6 jahre alt ^^ ich habs einfach nicht verstanden.

Tja und das makro habe ich versucht einzubinden weil ich hier im Forum einen eintrag bezüglich Autofill funktionen gefunden habe und Aufgrund der TestDB die Hochgeladen wurde versucht habe das ganze nachzuprogrammieren, mit mäßigem erfolg wie du gesehen hast ^^

Zu deinen anmerkungen in der Tabelle Auftrag: das mit dem Boolean hab ich ja schon erklärt. Und das Mahnverfahren muss leider mit berücksichtigt werden, die daten sind dazu da nachvollziehen zu können, wann die einzelnen schritte unternommen wurden.
Wegen der berechenbarkeit der Datums-Angaben, ist es möglich das den wert in dem Summenfeld nach der automatischen berechnung noch zu verändern (z.b. wenn z.b. ein kunde vereinbart, das er erst später zahlt)?

Das mit der automatischen Auftrags und rechnungs nummer ist toll, Ich hatte gegelaubt, das in den feldern immer ein wert eingegeben werden muss er in einer tabelle hinterlegt ist und nicht das dort direkte SQL befehle umgesetzt werden.

Ganz liebe Grüße
Lain

Nach oben