Seite 1 von 1

WAA und Excel

Verfasst: Mi, 30. Dez 2009 11:58
von Armin
Hilfe... geht das nicht?

Ich versuche im WAA eine Excel-Tabelle zu füllen. Dazu habe ich das Beispiel von Alaska angepasst und mit sleep(0) experimentiert. Ohne sleep() kann das Programm mittendrin abbrechen - in einer Schleife zum Füllen von Zellen - alle LOCAL-Variablen sind weg....

Jetzt läuft die Funktion komplett durch, jedoch stürzt der WAA-Server nach einiger Zeit einfach ab - mit XPPFATAL.LOG

Code: Alles auswählen

Function EP_INORDER(oHTML, oContext)
// *****************************************************************************
// Test
// *****************************************************************************
  LOCAL oExcel, oBook, oSheet

  begin sequence

  oExcel := CreateObject("Excel.Application")
  IF Empty( oExcel )
     oHTML:message("Excel nicht vorhanden")
     BREAK
  ENDIF

  oExcel:DisplayAlerts := .F.
  oExcel:visible       := .T.
  cDir := "g:\Armin"
  oBook  := oExcel:workbooks:Add()
  oSheet := oBook:ActiveSheet
  oSheet:PageSetup:Orientation := xlLandscape
  oSheet:Cells(nRow,1):Value := "Armin"
  sleep(0)
  oSheet:Columns( 1 ):AutoFit()
  sleep(0)
  oBook:SaveAs(cDir+"\Excel1.xls",xlWorkbookNormal)
  sleep(0)
  oExcel:Quit()
  sleep(0)
  oExcel:Destroy()
  sleep(0.1)

  oHTML:message("Exportieren beendet", cDir+"\MyExcel.xls")
  recover
  oHTML:message("Fehler beim Exportieren", "")
  end

  oHTML:message("ende","")
  sleep(0.1)

RETURN .t.
FATAL ERROR LOG
Error within the error handling!
SYS Thread-ID: 1856
Module: EXE
Error Codes: EH: 5 Sub: -1073741819(c0000005) OS: 0 XPP: 41
Call Stack of Thread 1 (556):
SRVSERVEFRONTEND(714)
MAIN(148)
Call Stack of Thread 2 (740):
Call Stack of Thread 3 (1260):
....
Call Stack of Thread 15 (1788):
@CGICHANNEL@I@CONNECT(109)
@WAAGATEWAY@I@CGICONNECT(75)
@WAA1REQUESTER@I@EXECUTE(177)
Call Stack of Thread 16 (1856):
DLGSTAT(58)
File: C:\ALASKA\WAA1W32\SERVER\waa1srv.exe
TimeStamp: 20091230 11:46
End of FATAL ERROR LOG.

Grüsse, Armin

Re: WAA und Excel

Verfasst: Mi, 30. Dez 2009 12:03
von Martin Altmann
Moin Armin,
Du könntest (am Ende der Funktion) Deine oExcel, oBook und oSheet noch auf NIL setzen.

Viele Grüße,
Martin

Re: WAA und Excel

Verfasst: Mi, 30. Dez 2009 12:35
von Armin
Huhu Martin,

habe es eingebaut:

Code: Alles auswählen

  oExcel := NIL
  oSheet := NIL
  oBook  := NIL
der Absturz kommt trotzdem :(
habe jetzt auch noch Excel auf unsichtbar probiert, hilft auch nicht

oExcel:visible := .F.

das ist alles "noch" mit der 331 - hilft evtl. die 335?

Hat das schon mal jemand versucht?

Grüße, Armin

Re: WAA und Excel

Verfasst: Mi, 30. Dez 2009 12:53
von Martin Altmann
Hallo Armin,
Armin hat geschrieben:das ist alles "noch" mit der 331 - hilft evtl. die 335?
das wäre auf jeden Fall einen Versuch wert!

Re: WAA und Excel

Verfasst: Mi, 30. Dez 2009 13:03
von Armin
Hallo Martin,

gibt es den WAA eigentlich für 335? Zum Download bei Alaska anscheinend nicht...

Die File-Upload-Geschichte mittels WAA könnte ich auch gebrauchen - ist anscheinend bereits eingebaut aber niemals geliefert...

Ich könnte diese Funktion für den ExcelExport in ein EXE packen, das vom WAA über runshell() gestartet wird - :coffee:

Hat jemand ActiveX mit dem WAA laufen?

Grüße, Armin

Re: WAA und Excel

Verfasst: Mi, 30. Dez 2009 13:07
von Martin Altmann
Hallo Armin,
Armin hat geschrieben:gibt es den WAA eigentlich für 335?
hast ja Recht - ist ja nicht verfügbar.
Habe schon ewig nichts mehr mit dem WAA gemacht, sorry!
Ich nutze ja schon einige Jahr XB2.NET (und habe damit auch bereits mal was mit ActiveX gemacht gehabt - die Grafiken der DevCon-Umfragen und -Statistiken).

Viele Grüße,
Martin

Re: WAA und Excel

Verfasst: Mi, 30. Dez 2009 17:01
von Armin
Hallo Martin,

folgendes funktioniert bei mir im WAA (für Auslesen von Webservice):

CreateObject("MSSOAP.SoapClient30")

Es scheint an Excel zu liegen - es ist bei mir die Version 2003 SP3 auf Windows Server 2003...

Hat jemand schon mal OpenOffice Calc angesteuert?

Grüße, Armin

Re: WAA und Excel

Verfasst: Mi, 30. Dez 2009 17:52
von AUGE_OHR
Armin hat geschrieben:Hilfe... geht das nicht?
Ich versuche im WAA eine Excel-Tabelle zu füllen.
ich weiss nicht wie das mit WAA ist, aber was sagt den der Code wenn du ihn "lokal" laufen lässt ?

was ich meine ist : läuft denn dein Code den "so" ?
ich "vermisse" da etliches, hier mal meine "Einleitung"

Code: Alles auswählen

   // save Errorblock
   bSaveError := ErrorBlock()

   // set new Errorblock
   ErrorBlock( {|e| Break(e)} )

   BEGIN SEQUENCE
      // Start Excel
      oExcel := CreateObject( "Excel.Application" )
      IF NIL == oExcel
         // Excel.Application could not be created.
         MSGBOX( "Excel Verbindung konnte nicht erstellt werden" )
         * ? "Error: ", ComLastError()
         * ? "Description:"
         * ? ComLastMessage()
         BREAK
      ELSE

         oWait := WAITBOX( setappwindow(), "Tabelle erstellen", .T., { 200, 140 } )

         oExcel:visible := .F.                   // NOT visible

      // If there is a problem, don't let excel pop up messages
         oExcel:Application:DisplayAlerts := .F.

      // Create a workbook from scratch
         oExcel:Application:Workbooks:new()
         oExcel:Application:Workbooks:add()

      // Office 97 Excel creates 3 worksheets by default
      // Delete 2 of them
*        oExcel:Application:Worksheets(3):delete()
*        oExcel:Application:Worksheets(2):delete()

      // Make the first one active
         oWorkBook := oExcel:activeWorkBook
         oExcel:Application:Worksheets( 1 ):activate()

      // Rename the sheet
         oExcel:Application:Worksheets( 1 ):name := ID_USER

      // Speed things up by creating an object containing the cells
         oSheet := oExcel:Worksheets( 1 ):cells

Re: WAA und Excel

Verfasst: Mo, 04. Jan 2010 10:50
von Armin
Hallo Jimmy,

der Code ist das Alaska-Beispiel. Da es sich um WAA, bzw. HTML handelt, habe ich die Ausgaben erstmal ersetzt oder rausgemacht. Ohne die eingefügten sleep stürzt es schon vorher ab.
Ich habe jetzt mal das Alaska-Beispiel lokal laufen lassen... funktioniert... also sollte es wahrscheinlich nicht an Windows 2003, bzw. Excel 2003 liegen.
Die Funktion läuft auch einwandfrei durch, der WAA stürzt erst später ab!

Grüße, Armin