2013-07-09 4 views
0

J'ai implémenté un WebService en Java (RMI). Dans Excel, j'ai deux Makros, l'un lit Data from the database via le webservice. l'autre écrit dans la base de données.VBA et Java Webservice

La lecture des données de la base de données sur le webservice a pas de problème (fonction: MyData[] getData() {...}) mais lorsque je tente d'appeler la méthode, qui devrait écrire des données dans la base de données que j'ai le problème, que les données fournies de la VBA -Code est nul alors dans le Java-Code.

Fonction: public void setData(final MyData[]) {...}

Je débogués et découvert, que le paramètre est non nul dans le code VBA. C'est seulement null dans le code Java.

Est-ce que quelqu'un sait, où les données peuvent être perdues?

Je pensais que j'avais un problème avec le XML ou similaire, mais je ne sais vraiment pas où chercher l'erreur.

+0

Pouvez-vous nous montrer un code? – orique

+0

Je vais vous montrer le code le plus tôt possible, mais je dois attendre quelques heures pour pouvoir commenter correctement, car je suis un nouveau ici;) – user1595399

Répondre

0

Bien sûr: voici le code - j'écourté un peu, mais la principale fonctionnalité est donnée

BTW, j'ai changé le type de données maintenant longtemps et maintenant je reçois un IllegalArgumentException

Java:

@WebMethod(operationName = "setData", action = "setData") 
    public void setData(final long k) 
    { 
     myValue = k; 
    } 

VBA dans Sheet1 j'appelle par exemple:

Call dataService.wsm_setData(5) 

et dans le serviceFile (généré avec le Service Web Toolkit):

Private sc_DataServic As SoapClient30 
Private Const c_WSDL_URL As String = "http://pcname:8010/myurl/data?wsdl" 
Private Const c_SERVICE As String = "DataServiceService" 
Private Const c_PORT As String = "DataServicePort" 
Private Const c_SERVICE_NAMESPACE As String = "http://myurl" 

Private Sub Class_Initialize() 
    Set sc_DataServic = New SoapClient30 
    sc_DataServic.MSSoapInit2 c_WSDL_URL, str_WSML, c_SERVICE, c_PORT, c_SERVICE_NAMESPACE 
    sc_DataServic.ConnectorProperty("ProxyServer") = "<CURRENT_USER>" 
    sc_DataServic.ConnectorProperty("EnableAutoProxy") = True 
    Set sc_DataServic.ClientProperty("GCTMObjectFactory") = New clsof_Factory_Data 
End Sub 

Public Function wsm_setData(ByVal dcml_arg0 As Double) 

    On Error GoTo wsm_setDataTrap 

    sc_DataServic.setData dcml_arg0 

    Set sc_DataServic = Nothing 
Exit Function 
wsm_setDataTrap: 
    DataServicErrorHandler "wsm_setData" 
End Function