PDA

View Full Version : vb.net problema con funzione in "module"


The March
13-04-2004, 17:05
sto facendo una pagina con una tabella, per prendere i dati di questa tabella dal db ho creato una funzione in una classe module, public function XXXX (x,y,z) as datatable ecc..

ora però dalla mia pagina non riesco ad associare questa funzione al datasource della mia tabella...


l'errore che restitiusce è:"'@@@@' is a type and cannot be used as an ezpression"

...
che devo fa? mi potete aiutare?
(se sono stato poco chiaro chiedete pure chiarimenti)

The March
13-04-2004, 17:25
pare che il problema fosse qualcos'altro...
chiamando la stessa funzione con un nome più corto non da nessun errore... probabilmente da qualche parte è dichiarato un tipo con lo stesso nome della mia funzione...
ma allora perchè mi avrebbe fatto dichiarare la funzione senza problemi?

Geen
14-04-2004, 10:57
Posta il pezzetto del codice..basta il prototipo della funzione e l'operazione di assegnamento.

Perchè se questo e' il codice

Public function MyFunc()as DataTable
.
.
.
end function


Grid.Datasource=MyFunc()

non c'e' nulla di sbagliato..

The March
14-04-2004, 11:03
Originariamente inviato da Geen
Posta il pezzetto del codice..basta il prototipo della funzione e l'operazione di assegnamento.

Perchè se questo e' il codice

Public function MyFunc()as DataTable
.
.
.
end function


Grid.Datasource=MyFunc()

non c'e' nulla di sbagliato..

infatti il codice è così...
non c'è nulla da fare, se la chiamo pippolol mi da quell'errore ma se la chiamo pippolo funziona alla perfezione (cambiando solo ed esclusivamente il nome..)
io pensavo che a sto punto il problema fosse che era già stata dichiarata un'altra funzione o un altro tipo all'interno del programma che sto facendo e quindi si confondesse tra la funzione ed il tipo... ma se fosse così non dovrebbe avermi dato errore quando dichiaravo la funzione?

Geen
14-04-2004, 15:11
Non e' sicuramente il nome che da problemi..sicuramente avrai usato come nome per la tua funzione una parola riservata o il nome di un altra funzione.Purtroppo a volte Vb.net lascia troppa libertà nell'implementazione del codice e ci si può trovare,con un codice mal scritto,in casi di ambiguità nonostante il compilatore non abbia segnalato alcunchè.Quindi bisogna avere accortezza nello scrivere con un certo criterio il codice e avere ben chiaro ambiti di visibilità e di appartenenenza perche' Vb.net lascia parecchia libertà.(=molta potenza ma possibilità di casini a volte difficili da scovare).Guarda sto esempio banale:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox()
End Sub

Public Sub TextBox()
Dim TextBox As New TextBox
TextBox.Parent = Me
TextBox.Show()
End Sub

Non da errori in compilazione e funziona pure..


Ps: posta il codice incriminato,basta il prototipo della funzione

Public Function NomeFunzione()
end function

e l'assegnazione

The March
14-04-2004, 15:25
Originariamente inviato da Geen

Ps: posta il codice incriminato,basta il prototipo della funzione

Public Function NomeFunzione()
end function

e l'assegnazione

grazie sei stato molto chiaro... era propio ad esempi come questi che mi riferivo... pensavo che direttamente nella dichiarazione della funzione mi avrebbe dato errori....

per il codice.... nemmeno immagini cosa mi stai chiedendo....
non la troverò mai... sto lavorando ad un progetto abbastanza grosso e sinceramente mi sono completamente dimenticato che fine ha fatto quella funzione... sorry.. se la trovo ti posto il codice!;)


p.s.
grazie per l'aiuto !

The March
14-04-2004, 15:42
ho trovato la funzione... mi sono ricordato che la funzione era in un modulo e all'interno del progetto esiste una sola classe di tipo modulo....(peccato che questo modulo è lungo 3500 righe)



Public Function PeriodicheScpa(ByVal Da As Date, ByVal A As Date, ByVal aAmm As Integer, ByVal aMan As Integer, ByVal aVal As Integer) As DataTable

End Function