Von Base-Formular einen Calc-Dialog öffnen

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: Von Base-Formular einen Calc-Dialog öffnen

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Di, 06.03.2012 20:07

UPDATE:

Ich hab das Problem gelöst. der Code um den Dialog zu starten sieht nun folgendermassen aus:

Code: Alles auswählen

Sub Dokuerstellen
Dim Doc As Object
Dim Url As String
Dim oSheet As Object
Dim Dummy()
Url = "file:///C:/Users/Dave/Desktop/nur Dave Offertenvorlage1.ods"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())
Doc.BasicLibraries.LoadLibrary("Standard")
Doc.DialogLibraries.LoadLibrary("Standard")
oForm = Doc.DialogLibraries.Standard.dOffertenerstellen
Dlg = CreateUnoDialog(oForm)
DateField1111 = dlg.getControl("DateField1111")   
   oDateFieldModel = dlg.Model.DateField1111
   oDateFieldModel.Text = date 'aktuelles Datum im Datefield anzeigen   
   oDoc2= ThisComponent
   oForm = oDoc2.DrawPage.Forms.getbyname("Kunden") 
oFeld1 = oForm.getbyname("txtAnrede") 
   sID1 = oFeld1.text
   TextField1 = dlg.getControl("TextField1")
   oTextFieldModel = dlg.Model.TextField1
   oTextFieldModel.Text = sID1
oFeld2 = oForm.getbyname("txtVorname")
   sID2 = oFeld2.text
   TextField2 = dlg.getControl("TextField2")
   oTextFieldModel = dlg.Model.TextField2
   oTextFieldModel.Text = sID2
oFeld3 = oForm.getbyname("txtNachname")
   sID3 = oFeld3.text
   TextField3 = dlg.getControl("TextField3")
   oTextFieldModel = dlg.Model.TextField3
   oTextFieldModel.Text = sID3
oForm2 = oForm.getbyname("Adressen")   
oFeld4 = oForm2.getbyname("txtAdressen")
   sID4 = oFeld4.text
   TextField4 = dlg.getControl("TextField4")
   oTextFieldModel = dlg.Model.TextField4
   oTextFieldModel.Text = sID4      
oFeld5 = oForm2.getbyname("txtPLZ")
   sID5 = oFeld5.text
   TextField5 = dlg.getControl("TextField5")
   oTextFieldModel = dlg.Model.TextField5
   oTextFieldModel.Text = sID5
oFeld6 = oForm2.getbyname("txtOrt")
   sID6 = oFeld6.text
   TextField6 = dlg.getControl("TextField6")
   oTextFieldModel = dlg.Model.TextField6
   oTextFieldModel.Text = sID6   
oFeld7 = oForm.getbyname("fmtID2")
   sID7 = oFeld7.text
   TextField7 = dlg.getControl("TextField7")
   oTextFieldModel = dlg.Model.TextField7
   oTextFieldModel.Text = sID7 
oForm3 = oForm.getbyname("Kundennummer")
oFeld8 = oForm3.getbyname("Kundennummer2")
   sID8 = oFeld8.text
   TextField8 = dlg.getControl("TextField8")
   oTextFieldModel = dlg.Model.TextField8
   oTextFieldModel.Text = sID8  
Dlg.execute()        
REM Datum übertragen
oDoc = ThisComponent   
  oSheet = Doc.CurrentController.getactiveSheet()
   oZell = oSheet.getCellRangeByName("B15") 'Zelle anpassen
   myDate = DateField1111.text
   oZell.Value= CDate(myDate)
   'oZell.NumberFormat = 30 'Format 13.05.06
   'oZell.NumberFormat = 31 'Format Sa 13.Mai 06
   'oZell.NumberFormat = 32 'Format 05.06
   'oZell.NumberFormat = 33 'Format 13.Mai
   'oZell.NumberFormat = 34 'Format Mai
   'oZell.NumberFormat = 35 'Format 2. Quartal 06
   oZell.NumberFormat = 36 'Format 13.05.2006
   'oZell.NumberFormat = 38 'Format Samstag, 13. Mai 2006
   'oZell.NumberFormat = 39 'Format 13. Mai 06

   MyCtrl1= dlg.getControl("TextField1")
   MyText1 = MyCtrl1.Model.Text
   mycell1 = oSheet.getCellRangeByName("C7")   
   mycell1.string=MyText1   

   MyCtrl2= dlg.getControl("TextField2")
   MyText2 = MyCtrl2.Model.Text
   mycell2 = oSheet.getCellRangeByName("C1")   
   mycell2.string=MyText2   

   MyCtrl3= dlg.getControl("TextField3")
   MyText3 = MyCtrl3.Model.Text
   mycell3 = oSheet.getCellRangeByName("D1")   
   mycell3.string=MyText3   

   MyCtrl4= dlg.getControl("TextField4")
   MyText4 = MyCtrl4.Model.Text
   mycell4 = oSheet.getCellRangeByName("C9")   
   mycell4.string=MyText4   

   MyCtrl5= dlg.getControl("TextField5")
   MyText5 = MyCtrl5.Model.Text
   mycell5 = oSheet.getCellRangeByName("C2")   
   mycell5.string=MyText5 


   MyCtrl6= dlg.getControl("TextField6")
   MyText6 = MyCtrl6.Model.Text
   mycell6 = oSheet.getCellRangeByName("D2")   
   mycell6.string=MyText6   



   MyCtrl7= dlg.getControl("TextField7")
   MyText7 = MyCtrl7.Model.Text
   mycell7 = oSheet.getCellRangeByName("E2")   
   mycell7.string=MyText7   



   MyCtrl8= dlg.getControl("TextField8")
   MyText8 = MyCtrl8.Model.Text
   mycell8 = oSheet.getCellRangeByName("E17")   
   mycell8.string=MyText8   



   MyCtrl1111= dlg.getControl("TextField1111")
   MyText1111 = MyCtrl1111.Model.Text
   mycell1111 = oSheet.getCellRangeByName("F1")   
   mycell1111.string=MyText1111   
  
End Sub
In dem Code musste ich noch die Codezeilen schreiben die die Werte aus den Textfeldern des Dialoges ins Sheet übertragen.

und in die Bibliothek " Meine Makros" musste ich die Codes schreiben für die Buttons ( Speichern, Drucken) auf den Sheets und noch ein paar Variablen als global definieren.

Code: Alles auswählen

global dlg as Object
global odialog as Object
global Dlg as Object
global oDialog as Object
global oDoc as Object
global oSheet as Object
global mySheet as Object
global Doc as Object

Sub GlobaleVariablen
end Sub

Sub SpeichernOfferte1seitig
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim oCell4 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Offerte1seitig")
   oCell1 = oSheet.getCellByPosition(3, 0) 
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0)
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
if oSheet.getcellbyposition(0 ,11).string = "Offerte" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Offerten"" (""KundenID"", ""Offerten"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if   
if oSheet.getcellbyposition(0 ,11).string = "Auftragsbestätigung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Aufträge"" (""KundenID"", ""Aufträge"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if
if oSheet.getcellbyposition(0 ,11).string = "Rechnung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end if    
end Sub
   
Sub SpeichernOfferte
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Offerte")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(1,13) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
  if oSheet.getcellbyposition(0 ,11).string = "Offerte" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Offerten"" (""KundenID"", ""Offerten"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if   
if oSheet.getcellbyposition(0 ,11).string = "Auftragsbestätigung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Aufträge"" (""KundenID"", ""Aufträge"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if 
end Sub

Sub SpeichernOfferte15seitig
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Offerte15seitig")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
if oSheet.getcellbyposition(0 ,11).string = "Offerte" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Offerten"" (""KundenID"", ""Offerten"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if   
if oSheet.getcellbyposition(0 ,11).string = "Auftragsbestätigung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Aufträge"" (""KundenID"", ""Aufträge"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if
if oSheet.getcellbyposition(0 ,11).string = "Rechnung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end if 
end Sub

Sub SpeichernOfferte25seitig
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Offerte25seitig")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
if oSheet.getcellbyposition(0 ,11).string = "Offerte" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Offerten"" (""KundenID"", ""Offerten"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if   
if oSheet.getcellbyposition(0 ,11).string = "Auftragsbestätigung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Aufträge"" (""KundenID"", ""Aufträge"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if
if oSheet.getcellbyposition(0 ,11).string = "Rechnung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end if 
end Sub

Sub SpeichernOfferte35seitig
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Offerte35seitig")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
if oSheet.getcellbyposition(0 ,11).string = "Offerte" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Offerten"" (""KundenID"", ""Offerten"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if   
if oSheet.getcellbyposition(0 ,11).string = "Auftragsbestätigung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Aufträge"" (""KundenID"", ""Aufträge"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if
if oSheet.getcellbyposition(0 ,11).string = "Rechnung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end if 
end Sub

Sub SpeichernOfferte05seitig
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Offerte05seitig")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
if oSheet.getcellbyposition(0 ,11).string = "Offerte" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Offerten"" (""KundenID"", ""Offerten"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if   
if oSheet.getcellbyposition(0 ,11).string = "Auftragsbestätigung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Aufträge"" (""KundenID"", ""Aufträge"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if
if oSheet.getcellbyposition(0 ,11).string = "Rechnung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end if 
end Sub

Sub SpeichernAkonto
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Akonto")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   Filename = "RG" & " " & sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
if oSheet.getcellbyposition(0 ,11).string = "1.Akonto" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if   
if oSheet.getcellbyposition(0 ,11).string = "2.Akonto" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end if
if oSheet.getcellbyposition(0 ,11).string = "Schlussrechnung" then    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end if 
end Sub

Sub SpeichernRG1SmV
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("RG1SmV")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())    
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end Sub

Sub SpeichernRG1SoV
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("RG1SoV")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(1, 13) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Rechnungen"" (""KundenID"", ""Rechnungen"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL) 
end Sub

Sub SpeichernLieferschein
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oCell1 As Object
   Dim oCell2 As Object
   Dim oCell3 As Object
   Dim sName As String
   Dim sVorname As String
   Dim sLaufwerk As String
   Dim sDirname As String
   Dim sFilename as String
   Dim DatabaseContext as Object
   Dim oDataquelle as Object 
   Dim oDatVerb as Object
   Dim oStatement as Object
   Dim sSQL as String
   Dim sID as String
   Dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Lieferschein")
   'Falls der Name in einer Zelle abgelegt wurde:
   oCell1 = oSheet.getCellByPosition(3, 0) 'Tabellenfeld, in dem der Name steht
   sName = oCell1.String
   oCell2 = oSheet.getCellByPosition(2, 0) 'Tabellenfeld, in dem der Vorname steht
   sVorname = oCell2.String
   oCell3 = oSheet.getCellByPosition(4, 0) 'Tabellenfeld, in dem das Geburtsdatum steht (Format TT.MM.JJJJ)
   sNummer= oCell3.String
   oCell4 = oSheet.getCellByPosition(4, 1)
   sID= oCell4.String
   sLaufwerk = "C:/Users/Dave/Desktop/Kunden/"
   sDirname =  sName & " " & sVorname
   sFilename = sNummer & " " & sName & " " & sVorname
   neuerpfad = sLaufwerk + "/" + sDirname + "/" + sFilename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storetourl(dateiurl,dummy())
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDatenquelle = DatabaseContext.getByName("wellmo nur Dave")
   oDatVerb = oDatenquelle.getConnection("","")
   oStatement = oDatVerb.createStatement()
   sSQL = "INSERT INTO ""Lieferscheine"" (""KundenID"", ""Lieferscheine"", ""Datum"") VALUES ('"+sID+"','"+sFilename+"', now)"
   oStatement.executeUpdate(sSQL)
end Sub

Sub DruckenOfferte
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(1)
Cellrangeaddress.Sheet = 1
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 184
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenOfferte1seitig
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(42)
Cellrangeaddress.Sheet = 42
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 90
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenOfferte15seitig
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(45)
Cellrangeaddress.Sheet = 45
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 108
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenOfferte25seitig
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(46)
Cellrangeaddress.Sheet = 46
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 163
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenOfferte35seitig
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(47)
Cellrangeaddress.Sheet = 47
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 219
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenOfferte05seitig
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(49)
Cellrangeaddress.Sheet = 49
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 54
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenRGS1mV
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(43)
Cellrangeaddress.Sheet = 43
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 53
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenRGS1oV
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(44)
Cellrangeaddress.Sheet = 44
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 53
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenAkonto
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(48)
Cellrangeaddress.Sheet = 48
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 53
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub DruckenLieferschein
Dim CellrangeAddress AS New com.sun.star.table.CellRangeAddress
Dim args(0)
Doc = ThisComponent
Sheet = Doc.Sheets(50)
Cellrangeaddress.Sheet = 50
Cellrangeaddress.StartColumn = 0
Cellrangeaddress.Startrow = 0
Cellrangeaddress.EndColumn = 5
Cellrangeaddress.EndRow = 55
args(0) = Cellrangeaddress
Sheet.setPrintAreas(args()) 
dim printProp(1) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
printProp(1).name = "CopyCount"
printProp(1).Value = 2
Doc.print(printProp())
end Sub

Sub Tabellenwechsel(quelle)
x = quelle.Source.Model.Label
blatt = ThisComponent.Sheets().getByName(x)
ThisComponent.CurrentController.setActiveSheet(blatt)
End Sub

Somit funktioniert alles wie es muss und soll, ich bin Happy und Danke euch allen nochmals für die Hilfe. Evtl. kann man ja den einten oder anderen Code nun auch von mir abgucken :shock:

Das einzige was schade ist, das man die Codes aus "Meine Makros" mit "REM" in die Dokumenten-Bibliothek kopieren muss, damit man es auf anderen Rechnern auch zum laufen bringt.

Ich habe beide Dateien nochmals hochgeladen. Damit Sie funktionieren muss man in der Bibliothek "Meine Makros" ein Modul Namens "Global" machen und den markierten Code in der Bibliothek "wellmo nur Dave" im Modul1 dort reinkopieren.
Ich hoffe jmd kann etwas damit, oder einem Teil davon, anfangen und ich kann somit auch wem behilflich sein.

Gruss Dave
Dateianhänge
wellmo nur Dave.odb
(34.61 KiB) 74-mal heruntergeladen
nur Dave Offertenvorlage1.ods
(103.89 KiB) 113-mal heruntergeladen

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Di, 06.03.2012 14:48

UPDATE

Ich habe nun viel versucht und rumgetüfftelt.
Ich habs nun soweit das auch die Werte des Dialogs ins Sheet eingetragen werden, dazu musste ich allerdings alle Abfrage-Routinen in die Base-Bibliothek schreiben, die Variablen anpassen etc.
Allerdings hab ich auf den Sheets auch Buttons zum Speichern ( auf die Festplatte und einen Link in die Datenbank) und Drucken des jeweiligen Sheets.
Diese Buttons funktionieren nun allerdings auch nicht mehr. Ich werde wohl nicht drumherum kommen, diese auch in die Base-Bibliothek zu schreiben und anzupassen.
Ich hoffe allerdings, es gibt da noch einen anderen weg, weil mich graust es schon wenn ich den "Jacuzzi-Dialog" samt allem Code zum Abfragen und einfügen auch umschreiben muss.

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Di, 06.03.2012 08:47

Guete Morgä mitenand

Leider hat's nichts genutzt dlg global in der Application-Bibliothek meine Makros/Standard zu definieren, hab auch alle Dokumente geschlossen und neu geöffnet damit sicher alles richtig geladen wird.

hat sonst noch jemand Lösungsvorschläge?

Edit: Ups, es funktioniert doch, ich muss natürlich auch die dlg-Definition in der Base-Bibliothek rausnehmen damit die globale benutzt wird :)
Der Dialog schliesst nun und wechselt auf das gewünschte Sheet. Aber die Werte werden nicht in das Sheet übertragen.

Gruss Dave

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Mo, 05.03.2012 20:26

Wow, du bist durch meine Codes durchgestiegen :)

Vielen Dank für deine Vorschläge, ich werde die Codes morgen ändern und Meldung erstatten.

Gruss Dave

Re: Von Base-Formular einen Calc-Dialog öffnen

von F3K Total » Mo, 05.03.2012 20:16

Hi, es ist schwer durchzusteigen,
Es liegt meiner Meinung nach daran, das Du den Dialog dlg aus einem in Base gestarteten Makro öffnest, dann ist er dem Calc-Dokument wohl unbekannt.
Willst Du dlg in zwei Dokumenten verwenden, geht das als globale Variable in der Application-Bibliothek meine Makros/Standard.

Code: Alles auswählen

global dlg as Object

Ausserdem hast Du dlg noch zweimal innerhalb einer Sub definiert, und zwar in OfferteBau und OfferteSauna.
Auch odialog solltest Du wie folgt definieren:

Code: Alles auswählen

global odialog as Object
, dass geht wiederum im Calc Dokument, weil das Makro, was odiaolg geöffnet hat hier definiert ist.

Gruß R

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Mo, 05.03.2012 18:03

Hallo DPunch
DPunch hat geschrieben:Servus

Ohne den kompletten Quellcode bleibt jeder Hilfeversuch dabei allerdings ein Stochern im Dunkeln.
Damit Ihr nicht mehr im Dunkeln stochern müsst habe ich mal beide Dateien hochgeladen.

Bitte nicht erschrecken ab den Code, ich hab ja schon diverse Möglichkeiten genannt bekommen um gewisse Codezeilen zu kürzen, habs aber noch nicht gemacht.
Die Offertenvorlage1 funktioniert alleine einwandfrei, nur wenn ich es über das Baseformular starte nicht.

PS: Die paar Namen in der DB sind frei erfunden
Dateianhänge
wellmo nur Dave.odb
(31.86 KiB) 59-mal heruntergeladen
nur Dave Offertenvorlage1.ods
(104.74 KiB) 84-mal heruntergeladen

Re: Von Base-Formular einen Calc-Dialog öffnen

von DPunch » Mo, 05.03.2012 07:20

Servus
wellmo hat geschrieben:dies hab ich folgendermassen gemacht:
(...)
dies bringt aber die gleiche Fehlermeldung.
Kein Wunder.
Da Du auch in diesem Fall mit

Code: Alles auswählen

Dim Dlg as Object
eine lokale Variable für den Dialog erzeugst, kannst Du ihn aus keiner anderen Prozedur heraus ansprechen - jeder Versuch würde in der Fehlermeldung "Objektvariable nicht belegt" enden...

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » So, 04.03.2012 11:11

Hallo

@DPunch
DPunch hat geschrieben:

Wenn der Dialog geladen und angezeigt wird, ist die Meldung nur durch einen Fehler Deinerseits erklärbar.
Davon gehe ich aus.
Die ganzen Quellcodes sind gross, zumindest denk ich das. Leider hab ich auch erst am Dienstag wieder zugriff drauf.

@Frieder D.
Frieder D. hat geschrieben: Des weiteren kannst du natürlich auch die Dokumenten-Bibliotheken laden:

Code: Alles auswählen

Doc.BasicLibraries.loadLibrary("Name der Bibliothek im Dokument")
dies hab ich folgendermassen gemacht:

Code: Alles auswählen

Sub Dokuerstellen
Dim Dlg as Object
Dim Doc As Object
Dim Url As String
Dim Dummy()
Url = "file:///C:/Users/Dave/Desktop/nur Dave Offertenvorlage1.ods"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())
Doc.BasicLibraries.loadLibrary("Standard")
Doc.DialogLibraries.LoadLibrary("Standard")
oForm = Doc.DialogLibraries.Standard.dOffertenerstellen
Dlg = CreateUnoDialog(oForm)
Dlg.execute()
End Sub
dies bringt aber die gleiche Fehlermeldung.

Was bewirkt dein Vorschlag
Frieder D. hat geschrieben: du könntest versuchen, beim Laden des Dokuments,
den Makro-Ausführungsmodus auf "Ausführen ohne nachzufragen"(=4) zu setzen .
Wie erwähnt kann ich es leider erst am Dienstag ausprobieren.
Dabei werd ich auch mal testen was passiert wenn ich die Sub "CloseDialogLieferschein" mal zusätzlich in die Basic.Lib des Basedokuments schreibe.

Auf jedenfall Danke für die Hilfestellungen und ich werd mich am Dienstag mit weiteren Infos wieder melden.

Gruss Dave

Re: Von Base-Formular einen Calc-Dialog öffnen

von Frieder D. » So, 04.03.2012 10:04

Hallo wellmo,

du könntest versuchen, beim Laden des Dokuments,
den Makro-Ausführungsmodus auf "Ausführen ohne nachzufragen"(=4) zu setzen .

Code: Alles auswählen

Dim myProp(0) as new com.sun.star.beans.PropertyValue
  myProp(0).name="MacroExecutionMode"
  myProp(0).value = 4	
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, myProp())
Des weiteren kannst du natürlich auch die Dokumenten-Bibliotheken laden:

Code: Alles auswählen

Doc.BasicLibraries.loadLibrary("Name der Bibliothek im Dokument")
Das könnte allerdings zu Problemen führen, falls du Subs- oder Funktionen im ods-Dokument hast,
deren Name Identisch mit Namen von Subs- oder Funktionen in der Base-Bibliothek sind.

Gruß
Frieder

Re: Von Base-Formular einen Calc-Dialog öffnen

von DPunch » So, 04.03.2012 04:14

Servus
wellmo hat geschrieben:egal ob mit oder ohne dlg, der Fehler kommt leider.
Wenn der Dialog geladen und angezeigt wird, ist die Meldung nur durch einen Fehler Deinerseits erklärbar.
Ohne den kompletten Quellcode bleibt jeder Hilfeversuch dabei allerdings ein Stochern im Dunkeln.

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Sa, 03.03.2012 20:21

Hallo DPunch

Ich muss dich und mich leider enttäuschen.

egal ob mit oder ohne dlg, der Fehler kommt leider.

Edit:
Liegt es nicht daran das die Basic.lib beim laden des Dialoges nicht mitgeladen wird?

Re: Von Base-Formular einen Calc-Dialog öffnen

von DPunch » Sa, 03.03.2012 20:11

Servus
wellmo hat geschrieben:So langsam wirds komplizierter
Eigentlich ist das nicht wirklich kompliziert.
Selbst wenn Du "dlg" global als Objekt deklariert hast, durch

Code: Alles auswählen

Sub DialogCloseLieferschein
Dim dlg As Object '########## <--------------------
dlg.endExecute()
überschreibst Du die globale Variable dlg durch eine lokale, nur für die Laufzeit der Prozedur gültige, neue, leere Variable dlg.
Schmeiss die erneute Deklaration von dlg aus allen Prozeduren raus.

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Sa, 03.03.2012 20:02

So, nachdem ich nun den Code erweitert habe damit er mir auch gleich Texte von den Feldern aus dem Formular in den Dialog einträgt ( was funktioniert ;)) ist nun das Problem, dass die Buttons auf dem Dialog nicht funktionieren.

Ums besser zu erklären:
Auf dem Dialog sind mehrere Buttons die den Dialog schliessen und mich direkt auf ein bestimmtes Sheet bringen und dort die Werte eintragen.
z.B.

Code: Alles auswählen

Sub DialogCloseLieferschein
dlg.endExecute()
Dim oController as Object
Dim oResults as Object
Dim oDoc as Object
oDoc = thisComponent
oController = oDoc.getCurrentController()     
oResults = oDoc.Sheets().getByIndex(50)
oController.setActiveSheet(oResults)
end Sub
Bisher hat der Code einwandfrei funktioniert aber nun bekomme ich bei dlg.endExecute() die Fehlermeldung BASIC-Laufzeitfehler. Objektvariable nicht belegt. Wobei dlg global als Object definiert ist.

Code: Alles auswählen

Sub DialogCloseLieferschein
Dim dlg As Object
dlg.endExecute()
Dim oController as Object
Dim oResults as Object
Dim oDoc as Object
oDoc = thisComponent
oController = oDoc.getCurrentController()     
oResults = oDoc.Sheets().getByIndex(50)
oController.setActiveSheet(oResults)
end Sub
Bei diesem Code das selbe

Code: Alles auswählen

Sub DialogCloseLieferschein
Dim dlg As Object
DialogLibraries.LoadLibrary( "Standard" )
dlg = CreateUnoDialog( DialogLibraries.Standard.dOffertenerstellen )
dlg.endExecute()
Dim oController as Object
Dim oResults as Object
Dim oDoc as Object
oDoc = thisComponent
oController = oDoc.getCurrentController()     
oResults = oDoc.Sheets().getByIndex(50)
oController.setActiveSheet(oResults)
end Sub
und bei diesem Code wechselt zwar das Sheet, aber der Dialog bleibt offen und die Werte aus dem Dialog werden nicht im Sheet übernommen.

Ich nehme an das liegt daran das ich den Dialog ein zweites mal geladen habe.

Wie kann ich das aber umgehen?
Muss ich denn bei:

Code: Alles auswählen

Sub Dokuerstellen
Dim Dlg as Object
Dim Doc As Object
Dim Url As String
Dim Dummy()
Url = "file:///C:/Users/Dave/Desktop/nur Dave Offertenvorlage1.ods"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())
Doc.DialogLibraries.LoadLibrary("Standard")
oForm = Doc.DialogLibraries.Standard.dOffertenerstellen
Dlg = CreateUnoDialog(oForm)
Dlg.execute()
End Sub
noch

Code: Alles auswählen

Doc.BasicLibraries.LoadLibrary("Standard")
einbauen?
Dies hab ich nämlich versucht aber nicht hinbekommen

So langsam wirds komplizierter :(

Re: Von Base-Formular einen Calc-Dialog öffnen

von wellmo » Sa, 03.03.2012 18:02

Hi R

Vielen Dank, ich habe so viele Varianten hier im Forum gefunden und ausprobiert und alle hatten versagt.

Nun passts und ich kann weiter tüffteln ;)

Gruss Dave

Re: Von Base-Formular einen Calc-Dialog öffnen

von F3K Total » Sa, 03.03.2012 17:47

Hi Dave,

mit der Zeile

Code: Alles auswählen

GlobalScope.DialogLibraries.LoadLibrary( "Standard" )
lädst Du die Standard Dialog Library unter Meine Makros&Dialoge
Willst Du die Library im gerade geöffneten Dokument laden, geht das z.B. so.

Code: Alles auswählen

Sub Dokuerstellen
Dim Dlg as Object
Dim Doc As Object
Dim Url As String
Dim Dummy()
Url = "file:///C:/Users/Dave/Desktop/nur Dave Offertenvorlage1.ods"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())
Doc.DialogLibraries.LoadLibrary("Standard")
oForm = Doc.DialogLibraries.Standard.dOffertenerstellen
Dlg = CreateUnoDialog(oForm)
Dlg.execute()
End Sub
Gruß R

Nach oben