von puzzledag » Fr, 12.06.2009 08:50
Hallo,
ich habe in einem Datenbankformular eine Tabelle bei der zwei Spalten (Essen1, Essen2) mit einem Markierfeld belegt sind. Es darf in jeder Zeile nur aber nur entweder Essen1 oder Essen2 gesetzt werden. Nun sollen diese Spalten mit einem Makro belegt werden, das beim Klicken in eine der Spalten z.B. Essen1 prüft, ob
a) die Markierung in dieser Spalte gesetzt wurde und
b) wenn sie gesetzt wurde, die evtl. vorhandene Markierung der anderen Spalte (Essen2) löscht.
Ich habe nun ein Makro aufgezeichnet, das genau diese Schritte vornimmt. Nur leider funktioniert dieses nach erneutem Aufruf nicht mehr.
Hier der Code des Aufgezeichneten Makros.
sub xxx
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:RecSave", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Refresh", "", 0, Array())
end sub
was ist falsch?
Ich habe nun probiert, die Daten direkt per SQL zu ändern. Hier bekomme ich aber Fehlermeldungen.
sub essen1_aendern (tc_teilnehmer as Intereger) as Integer
DIM iEssen AS Integer
DIM oStatement As Object, oDatenbankKontext As Object, oDatenquelle As Object
DIM oVerbindung As Object, oResultSet As Object
DIM sSQL As String, sHeute AS String, sEssen AS String, sTeilnehmer as String
CALL datensatz_speichern()
sTeilnehmer = tc_teilnehmer
sHeute = Right(Date, 4) & "-" & Mid(Date, 4, 2) & "-" & Left(Date, 2) 'Tagesdatum in Datenbankformat umwandeln
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "db_kantinenabrechnung" )
oVerbindung = oDatenquelle.getConnection( "" , "" )
oStatement = oVerbindung.createStatement()
oQuery = oVerbindung.createStatement()
sSQL = "SELECT ""essen1"" FROM ""tab_essensmarkenausgabe"" WHERE ""erfassungsdatum"" = '"+ sHeute +"' and ""id_teilnehmer"" = '"+ sTeilnehmer +"'"
oResultSet = oQuery.executeQuery(sSQL)
while oResultSet.next()
iEssen = oResultSet.getInt( 1 )
If iEssen = 1 Then
sEssen = iEssen
else
sEssen = "0"
end If
sSQL = "UPDATE ""tab_essensmarkenausgabe"" SET ""essen1 = ""essen2"" = 0 WHERE ""erfassungsdatum"" = '"+ sHeute +"' and ""id_teilnehmer"" = '"+ sTeilnehmer +"'"
oStatement.execute(sSQL)
wend
oResultSet.close()
oVerbindung.close()
oStatement.close()
oQuery.close()
CALL essen_akt() 'Formular aktualisieren
end sub
Jetzt habe ich keine Idee mehr.
Bitte dringend um Hilfe!!!!
Gruß
Dagmar
Hallo,
ich habe in einem Datenbankformular eine Tabelle bei der zwei Spalten (Essen1, Essen2) mit einem Markierfeld belegt sind. Es darf in jeder Zeile nur aber nur entweder Essen1 oder Essen2 gesetzt werden. Nun sollen diese Spalten mit einem Makro belegt werden, das beim Klicken in eine der Spalten z.B. Essen1 prüft, ob
a) die Markierung in dieser Spalte gesetzt wurde und
b) wenn sie gesetzt wurde, die evtl. vorhandene Markierung der anderen Spalte (Essen2) löscht.
Ich habe nun ein Makro aufgezeichnet, das genau diese Schritte vornimmt. Nur leider funktioniert dieses nach erneutem Aufruf nicht mehr.
Hier der Code des Aufgezeichneten Makros.
sub xxx
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:RecSave", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Refresh", "", 0, Array())
end sub
was ist falsch?
Ich habe nun probiert, die Daten direkt per SQL zu ändern. Hier bekomme ich aber Fehlermeldungen.
sub essen1_aendern (tc_teilnehmer as Intereger) as Integer
DIM iEssen AS Integer
DIM oStatement As Object, oDatenbankKontext As Object, oDatenquelle As Object
DIM oVerbindung As Object, oResultSet As Object
DIM sSQL As String, sHeute AS String, sEssen AS String, sTeilnehmer as String
CALL datensatz_speichern()
[color=#FF0000][size=150] sTeilnehmer = tc_teilnehmer[/size][/color]
sHeute = Right(Date, 4) & "-" & Mid(Date, 4, 2) & "-" & Left(Date, 2) 'Tagesdatum in Datenbankformat umwandeln
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName( "db_kantinenabrechnung" )
oVerbindung = oDatenquelle.getConnection( "" , "" )
oStatement = oVerbindung.createStatement()
oQuery = oVerbindung.createStatement()
sSQL = "SELECT ""essen1"" FROM ""tab_essensmarkenausgabe"" WHERE ""erfassungsdatum"" = '"+ sHeute +"' and ""id_teilnehmer"" = '"+ sTeilnehmer +"'"
oResultSet = oQuery.executeQuery(sSQL)
while oResultSet.next()
iEssen = oResultSet.getInt( 1 )
If iEssen = 1 Then
sEssen = iEssen
else
sEssen = "0"
end If
sSQL = "UPDATE ""tab_essensmarkenausgabe"" SET ""essen1 = ""essen2"" = 0 WHERE ""erfassungsdatum"" = '"+ sHeute +"' and ""id_teilnehmer"" = '"+ sTeilnehmer +"'"
oStatement.execute(sSQL)
wend
oResultSet.close()
oVerbindung.close()
oStatement.close()
oQuery.close()
CALL essen_akt() 'Formular aktualisieren
end sub
Jetzt habe ich keine Idee mehr.
Bitte dringend um Hilfe!!!!
Gruß
Dagmar