Seite 1 von 1

GELÖST: GridControl: frischer Eintrag aktualisieren

Verfasst: Di 18. Jun 2013, 16:09
von ms-fu!
Hallo,

ich habe ein Tabellen-Steuerelement, wo ich eine neue Zeile erstelle und Werte eingebe. Eines der Felder ist ein AutoFeld. Habe ich alle restlichen Felder bearbeitet und führe dann einen Bericht aus, der eben diese eingegebene Zeile ausgeben soll, bekomme ich eine Fehlermeldung, da im AutoFeld noch <AutoFeld> anstelle des AutoWerts steht. Dieser Wert ist nämlich der Suchwert eines SQL Statements.
Wie kann man die Zeile per Makro aktualisieren so daß vor der Berichtserstellung der entsprechende AutoWert erstellt wird?

Ich habe schon diverse Tipps ausprobiert (oForm.unload()/.load(); .updateRow usw.) komme allerdings auf keinen grünen Zweig.
Screenshot GridControl
Screenshot GridControl
Screenshot-2013-06-18_16.23.40.png (5.44 KiB) 2542 mal betrachtet
Gruß
Michael

Re: GridControl: frischer Eintrag aktualisieren

Verfasst: Di 18. Jun 2013, 20:06
von RobertG
Hallo Michael,

das hattest Du doch eigentlich schon gelöst:

Code: Alles auswählen

Sub NewRecord (oEv as object)
dim oForm as object
oForm = oEv.source.model.parent
Rem Akutelle Zeile speichern
If oForm.IsNew then
oForm.InsertRow
Else
oForm.UpdateRow
End if
	Filtern_und_Drucken
Rem Zur aktuellen Zeile springen
oForm.MoveToInsertRow
End sub

SUB Filtern_und_Drucken
	DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oForm AS OBJECT
	DIM oFeld AS OBJECT
	DIM oDatenquelle AS OBJECT
	DIM oVerbindung AS OBJECT
	DIM oSQL_Anweisung AS OBJECT
	DIM stSQL AS STRING
	oDoc = thisComponent
	oDrawpage = oDoc.Drawpage
	oForm = oDrawpage.Forms.getByName("MainForm")
	oFeld = oForm.getByName("MainForm_Grid")
	oDatenquelle = ThisComponent.Parent.CurrentController
	If NOT (oDatenquelle.isConnected()) THEN
		oDatenquelle.connect()
	END IF
	oVerbindung = oDatenquelle.ActiveConnection()
	oSQL_Anweisung = oVerbindung.createStatement()
	stSql = "UPDATE ""Filter"" SET ""Integer"" = '"+oFeld.GetByIndex(4).GetCurrentValue()+"' WHERE ""ID"" = TRUE"
	oSQL_Anweisung.executeUpdate(stSql)
	ThisDatabaseDocument.ReportDocuments.getByName("Werkstoff_Bericht").open
END SUB
Filtern_und_Drucken wird gestartet, nachdem der Datensatz geschrieben wurde (in NewRecord). Bei mir klappt das mit einem Tabellenkontrollfeld und der obigen Makrofolge tadellos.

Gruß

Robert

Re: GridControl: frischer Eintrag aktualisieren

Verfasst: Mi 19. Jun 2013, 08:13
von ms-fu!
Guten Morgen Robert,

meine Güte! Mal wieder ein typische "Layer 8" Problem. :roll:
Tatsächlich hatte ich irgendwann am Anfang die "New Record" Routine umgangen weil ich keinen Sinn darin sah und ich griff direkt auf "Filtern_und_Drucken" zu.

Entschuldigung für diesen unnötigen Thread!

Gruß
Michael