47 messaggi dal 27 ottobre 2014
Ciao Moreno,

come sempre il tuo intervento e' stato determinante e risolutivo. Grazie grazie .... grazie 1000.

Avevo gia' letto la pagina della guida ma non ero riuscito ad applicarla alla mia situazione, mentre il tuo esempio e' stato immediatamente applicabile.

Non riesco pero' a capire come fare a dimensionare l'array con il numero di elementi che mi servono, e che e' ovviamente variabile ...

Approfitterei anche dell'occasione di una tua nuova risposta per sapere se si puo' avere accesso in qualche modo, all'XML completo che viene inviato al Web Service.

Grazie in anticipo.
Enzo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Enzo, prego :)

Enzo58 ha scritto:

dimensionare l'array con il numero di elementi che mi servono, e che e' ovviamente variabile ...

Potresti avvalerti di una lista generica che, a differenza di un normale Array, possiede un comodo metodo .Add per aggiungere oggetti al bisogno. Utile se non sai a priori quanti saranno.
Quando hai finito di aggiungerne, invochi il metodo .ToArray() per riottenere un array e assegnarlo alla proprietà Dettaglio.
Ecco un esempio:

Dim Lista As New List(Of Persona)()
Lista.Add(New Persona() With {.Cognome = "Rossi", .Nome = "Mario"})
Lista.Add(New Persona() With {.Cognome = "Verdi", .Nome = "Luigi"})
...
'riconverto la lista in array
richiesta.Dettaglio = Lista.ToArray()


Comunque, spiega da dove arrivano i tuoi elementi, magari esiste una maniera più efficiente per inserirli in un array.

ciao,
Moreno
Modificato da BrightSoul il 14 gennaio 2015 23.29 -

Enjoy learning and just keep making
47 messaggi dal 27 ottobre 2014
Ciao Moreno e grazie per la tua risposta, come sempre risolutiva.

In effetti avevo gia' tentato la strada da te suggerita ma non avevo considerato l'assegnazione finale .ToArray in quanto sono ancora troppo impregnato di VB6 ...

Ad ogni modo il lavoro e' quasi completato e non dovrei avere difficolta' a terminarlo senza ulteriori problemi ...

Grazie ancora e ... se hai anche una risposta per l'accesso al file XML che viene inviato al web service, ti sarei ulteriormente grato.

Cordiali saluti.

Enzo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Enzo,
purtroppo non ho l'xml perché non ho dovuto lavorare con i servizi della Sogei personalmente. Prova a contattare uno degli altri utenti che hanno risolto il problema; chiedere non costa nulla ;)

ciao

Enjoy learning and just keep making
47 messaggi dal 27 ottobre 2014
Ciao Moreno,

grazie per il tuo consiglio: ovviamente la mia richiesta e' rivolta a tutti, ma non e' specifica per il web service SOGEI:

Quando si effettua la richiesta ad un web service tramite .net, si utilizza la classe creata in automatico dall'ambiente di sviluppo (Add Service Reference) assegnando le varie proprieta' ed utilizzando i vari metodi a disposizione .... la domanda e':

Si puo' visualizzare in qualche modo, l'XML che viene generato dopo l'assegnazione delle varie proprieta' ?

Grazie.
1 messaggio dal 25 febbraio 2001
Salve,
sto usando il WS Aruba DocFly e sembra funzionare con la versione WS di Produzione ma NON con la versione Collaudo.
Per le 2 versioni uso le stesse credenziali del Pannello...

Con il riferimento al WS di Collaudo ricevo sempre:
Errore, autenticazione soap fallita. Verificare i parametri di autenticazione per l'invocazione dei metodi
mentre con la versione di Produzione sembra funzionare... stesso codice, stesse credenziali, cambia solo il riferimento del WS

Per la versione Collaudo forse bisogna cambiare credenziali o qualche altro parametro?

Grazie

Luca
Modificato da cyberfester il 27 febbraio 2015 17.51 -
1 messaggio dal 31 marzo 2015
Ciao Moreno, anche io ho lo stesso problema di Enzo; in fase di chiusura della ricetta dematerializzata non riesco a generalizzare l'invio dei dettagli degli esami.
Ho provato ad avvalermi di una lista generica ma ricevo risposta negativa alla chiamata del web service.
Se faccio questo funziona:
richiesta.ElencoDettagliPrescrInviiErogato = New InvioErogatoSTD.dettaglioPrescrizioneInvioErogatoType() {
New InvioErogatoSTD.dettaglioPrescrizioneInvioErogatoType With {.codProdPrest = "90092", .codProdPrestErog = "90092", .descrProdPrestErog = "ASPARTATO AMINOTRANSFERASI (AST) (GOT) [S]", .codBranca = "11", .prezzo = 1.04, .quantitaErogata = 1, .dataIniErog = "2015-03-31 00:00:00", .dataFineErog = "2015-03-31 00:00:00", .prezzoRimborso = 0},
New InvioErogatoSTD.dettaglioPrescrizioneInvioErogatoType With {.codProdPrest = "90045", .codProdPrestErog = "90045", .descrProdPrestErog = "ALANINA AMINOTRANSFERASI (ALT) (GPT) [S/U]", .codBranca = "11", .prezzo = 1.0, .quantitaErogata = 1, .dataIniErog = "2015-03-31 00:00:00", .dataFineErog = "2015-03-31 00:00:00", .prezzoRimborso = 0},
New InvioErogatoSTD.dettaglioPrescrizioneInvioErogatoType With {.codProdPrest = "91492", .codProdPrestErog = "91492", .descrProdPrestErog = "PRELIEVO VENOSO", .codBranca = "11", .prezzo = 2.58, .quantitaErogata = 1, .dataIniErog = "2015-03-31 00:00:00", .dataFineErog = "2015-03-31 00:00:00", .prezzoRimborso = 2.58}
}


se provo a generalizzarlo non funziona:

For Each An As AnalisiErogate In EsameC
st1 = An.CodRegAnalisi
st2 = An.CodRegAnalisi
st3 = An.DescrAnalisi
st4 = An.CodBranca
st4 = "11"
st5 = An.ImportoAsl
st6 = An.NPrestazione.ToString
st7 = UT.F2TI(An.DtIniErog) & " 00:00:00"
st8 = UT.F2TI(An.DtFineErog) & " 00:00:00"
st9 = "0"
Lista.Add(New InvioErogatoSTD.dettaglioPrescrizioneInvioErogatoType() With {.codProdPrest = "& st1 & ", .codProdPrestErog = "& st2 & ", .descrProdPrestErog = "& st3 & ", .codBranca = "& st4 & ", .prezzo = "& st5 & ", .quantitaErogata = "& st6 & ", .dataIniErog = "& st7 & ", .dataFineErog = "& st8 & ", .prezzoRimborso = st9})
Next
richiesta.ElencoDettagliPrescrInviiErogato = Lista.ToArray()

Spero tu possa aiutarmi, da domani i miei clienti dovranno obbligatoriamente chiudere le ricette in modo telematico.

Grazie
Stefano
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Stefano,
penso che l'errore sia nel modo in cui valorizzi le proprietà di .dettaglioPrescrizioneInvioErogatoType.

Prendiamo questo frammento per esempio:
.codProdPrest = "& st1 & ",

Qui stai assegnando a codProdPres la stringa "& st1 & ", così come l'ho scritta, tale e quale. st1 non viene valutato come variabile, perché si trova in una stringa, e quindi verrà trattato letteralmente.

Immagino che tu abbia voluto scrivere:
.codProdPrest = st1,


Altrimenti, l'invocazione a .ToArray() è corretta e funzionerà bene.
In alternativa, usando il metodo .Select() offerto da LINQ per le liste, puoi proiettare EsameC in una lista di dettaglioPrescrizioneInvioErogatoType, senza dover usare un Foreach e copiare i valori in variabili di appoggio. Esempio (ci saranno degli errori ma lo scrivo comunque per comunicarti il concetto):

richiesta.ElencoDettagliPrescrInviiErogato = EsameC.Select(Function(esame) New dettaglioPrescrizioneInvioErogatoType With {.codProdPrest = esame.CodRegAnalisi, .codProdPrestErog=esame.CodRegAnalisi, ... }).ToArray()


ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.