von sascha11 » Mo, 20.03.2006 14:13
hey!
hier mal der komplette Code, Erklärung folgt
OpenOffice Version 2.01
ich möchte die Zeile zuerst auslesen, dann erhöhe ich Sie und dann schreibe ich Sie wieder an die betreffende Stelle.
Mit dem betreffenden Code lese ich zuerst die Zeile , an die geschrieben werden soll aus, dann erhöhe ich die Zeile, damit in ein leeres Feld geschrieben wird und dann baue ich mir den String mit der leeren Zelle, z. Bsp.: Tabelle.B1, das ist dann der zusammengesetzte String, nur erhalte ich hier die Fehlermeldung!
[quote]
REM ***** BASIC *****
Dim oD1 as Object 'Eingabemaske
Dim myDoc as Object 'Das Tabellendokument
Dim oT1 as Object, oT2 as Object 'Die Tabellenblätter "Liste" und "Daten"
Dim nNeueDatSatz as integer 'Neue Datensatz- Zeilennummer
Sub main
mydoc= ThisComponent
oT1=myDoc.sheets(1)
oT2=myDoc.sheets(2)
'Maske initialisieren
DialogLibraries.LoadLibrary ("Standard")
oD1= CreateUnodialog(DialogLibraries.Standard.Maske)
initMaske
oD1.Execute()
end sub
'---------- Formular initialisieren und Werte eintragen -----
Sub Abbrechen
oD1.EndExecute()
end sub
Sub initMaske
'--- neue Zeilennummer erzeugen, Zugriff auf Zellbereichsobjekt ---
nNeuDatSatz = oT2.getCellRangeByName("Daten.B1").value
'--- Neue Datensatznummer eintragen ---
'--- Datensatznummer in Maske schreiben ---
oD1.getcontrol("datensatznr").text =nNeuDatSatz+1
oT2.getCellRangeByName("Daten.B1").value=nNeuDatSatz+1
nNeuDatSatz= nNeuDatSatz + 1
'--- Auswahllisten mit Daten füllen ---
FuellListe ("AbfOrt", "d", 2, 23)
'Fuellliste ("Liste", Spalte, Zeile, Anzahl Elemente)
'--- Eingabefelder Inhalte löschen
oD1.getControl ("name").text=""
oD1.getControl ("infotermin").text=""
oD1.getControl ("antragbis").text=""
oD1.getControl ("antraggestellt").text=""
oD1.getControl ("kAufnahmewg").text=""
oD1.getControl ("aufnkom").text=""
oD1.getControl ("antragab").text=""
oD1.getControl ("anTraeger").text=""
oD1.getControl ("kzusage").text=""
oD1.getControl ("aufnahme").text=""
oD1.getControl ("wg").text=""
satzSpeichern
end sub
sub FuellListe (Liste, spalte, zeile,eNr)
FFeld=oD1.getcontrol(Liste)
FFeld.removeitems(0,eNr)
for i=0 to eNr
adr="$"+spalte+"$"+(i+zeile)
inhalt=oT2.getCellRangeByName(adr).string
FFeld.additem(inhalt,i)
next
FFeld.additem("",0)
end sub
Sub Maske
End Sub
function DatWert (FDat)
sFDat=Format(fDat,"00000000")
sDat=right(sFdat,2)&"."&mid(sFdat,5,2)&"."&left(sfdat,4)
DatWert=sDat
end function
function dat_adr(sp)
zeile = nNeueDatSatz
dat_adr="$" & sp &"$" & zeile
end function
sub Datenbereich
Dim aPos1 as New com.sun.star.table.CellAddress
oBereich=ThisComponent.NamedRanges
oBereich.removebyname("Datenbank")
oBereich.addNewbyName("Datenbank","$Liste.$A$2:$L$"&nNeuDatSatz,aPos1,0)
end sub
sub SatzSpeichern
'sBereich = "Liste.B" & nNeuDatSatz
'----hier kommt der, den Thread betreffende Code ----
'oT1.getCellRangeByName(sBereich).value=oD1.getcontrol("name").text
'initMaske
end sub
[/quote]
Danke,
Sascha
hey!
hier mal der komplette Code, Erklärung folgt
OpenOffice Version 2.01
ich möchte die Zeile zuerst auslesen, dann erhöhe ich Sie und dann schreibe ich Sie wieder an die betreffende Stelle.
Mit dem betreffenden Code lese ich zuerst die Zeile , an die geschrieben werden soll aus, dann erhöhe ich die Zeile, damit in ein leeres Feld geschrieben wird und dann baue ich mir den String mit der leeren Zelle, z. Bsp.: Tabelle.B1, das ist dann der zusammengesetzte String, nur erhalte ich hier die Fehlermeldung!
[quote]
REM ***** BASIC *****
Dim oD1 as Object 'Eingabemaske
Dim myDoc as Object 'Das Tabellendokument
Dim oT1 as Object, oT2 as Object 'Die Tabellenblätter "Liste" und "Daten"
Dim nNeueDatSatz as integer 'Neue Datensatz- Zeilennummer
Sub main
mydoc= ThisComponent
oT1=myDoc.sheets(1)
oT2=myDoc.sheets(2)
'Maske initialisieren
DialogLibraries.LoadLibrary ("Standard")
oD1= CreateUnodialog(DialogLibraries.Standard.Maske)
initMaske
oD1.Execute()
end sub
'---------- Formular initialisieren und Werte eintragen -----
Sub Abbrechen
oD1.EndExecute()
end sub
Sub initMaske
'--- neue Zeilennummer erzeugen, Zugriff auf Zellbereichsobjekt ---
nNeuDatSatz = oT2.getCellRangeByName("Daten.B1").value
'--- Neue Datensatznummer eintragen ---
'--- Datensatznummer in Maske schreiben ---
oD1.getcontrol("datensatznr").text =nNeuDatSatz+1
oT2.getCellRangeByName("Daten.B1").value=nNeuDatSatz+1
nNeuDatSatz= nNeuDatSatz + 1
'--- Auswahllisten mit Daten füllen ---
FuellListe ("AbfOrt", "d", 2, 23)
'Fuellliste ("Liste", Spalte, Zeile, Anzahl Elemente)
'--- Eingabefelder Inhalte löschen
oD1.getControl ("name").text=""
oD1.getControl ("infotermin").text=""
oD1.getControl ("antragbis").text=""
oD1.getControl ("antraggestellt").text=""
oD1.getControl ("kAufnahmewg").text=""
oD1.getControl ("aufnkom").text=""
oD1.getControl ("antragab").text=""
oD1.getControl ("anTraeger").text=""
oD1.getControl ("kzusage").text=""
oD1.getControl ("aufnahme").text=""
oD1.getControl ("wg").text=""
satzSpeichern
end sub
sub FuellListe (Liste, spalte, zeile,eNr)
FFeld=oD1.getcontrol(Liste)
FFeld.removeitems(0,eNr)
for i=0 to eNr
adr="$"+spalte+"$"+(i+zeile)
inhalt=oT2.getCellRangeByName(adr).string
FFeld.additem(inhalt,i)
next
FFeld.additem("",0)
end sub
Sub Maske
End Sub
function DatWert (FDat)
sFDat=Format(fDat,"00000000")
sDat=right(sFdat,2)&"."&mid(sFdat,5,2)&"."&left(sfdat,4)
DatWert=sDat
end function
function dat_adr(sp)
zeile = nNeueDatSatz
dat_adr="$" & sp &"$" & zeile
end function
sub Datenbereich
Dim aPos1 as New com.sun.star.table.CellAddress
oBereich=ThisComponent.NamedRanges
oBereich.removebyname("Datenbank")
oBereich.addNewbyName("Datenbank","$Liste.$A$2:$L$"&nNeuDatSatz,aPos1,0)
end sub
sub SatzSpeichern
'sBereich = "Liste.B" & nNeuDatSatz
'----hier kommt der, den Thread betreffende Code ----
'oT1.getCellRangeByName(sBereich).value=oD1.getcontrol("name").text
'initMaske
end sub
[/quote]
Danke,
Sascha