Newsgroup: it.comp.appl.access
Titolo: SQL Problema irrisolto

Salve a tutto il NG,
continuo a non risolvere il mio problema,
ho provato a creare una funzione con il seguente codice:
"Public Function InsArtistico(IdCliente As Long) As String
Dim rst As DAO.Recordset, Risult As String
Set rst = CurrentDb.OpenRecordset("SELECT
[IdCliente],[DataPrestazione],[CodiceOperatore] FROM
[QRYPrestazioniVecchie]" & _
"WHERE IdCliente =" & Forms!FRMServizi!IdCliente)
Risult = Risult & IIf(Risult = "", "", "+") & Nz(!InsArtistico, "")
With rst
MoveFirst
While Not .EOF
Risult = Risult
MoveNext
Wend
End With
rst.Close: Set rst = Nothing
InsArtistico = Risult
End Function"
Inserendo poi su corrente della form "Private Sub Form_Current()
If IsNull(Artistico) Then
Me.Artistico.Value = InsArtistico(IdCliente)
End If
End Sub", non mi dà errore, tantomento mi restituisce dati!
Non so più che cosa fare :(
Help me!
Grazie
Lucio
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:dsfbk6$ipo$1...@news.newsland.it...

Ciao Lucio,
puoi spiegare cosa dovrebbe fare questa funzione xchè dal codice francamente
non capisco....
sembra una funzione ricorsiva che richiama se stessa per ogni record del
recordset,  in una specie di loop infinito...
Forse mi sfugge qualcosa  ma se spieghi meglio magari ci arrivo...
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
--------------------------------------->

Lucio ha detto: in data 09/02/2006 13.12:

quello che non capisco è: !InsArtistico da dove viene? perchè non fa 
parte di rst
prova a scrivere così il corpo della tua funzione (mettendo per ipotesi 
che !InsArtistico fa parete di rst (quindi è da inserire nella SELECT)):
Risult = Risult & IIf(Risult = "", "", "+") & Nz(!InsArtistico, "")
with rst
.MoveFirst
do While Not .EOF
Risult = Risult & IIf(Risult = "", "", "+") & Nz(!InsArtistico, "")
.MoveNext
loop
End With
rst.Close: Set rst = Nothing
InsArtistico = Risult
facci sapere
ciao
Nick

 wrote in message 
news:dsfbk6$ipo$1...@news.newsland.it...

Potresti vedere di spiegarti meglio.
Intanto la sintassi per la modifica del record è sbagliata:
Do Until rst.EOF
        With rst
                .Edit
                ![Risult] = Risult
                .Update
        End With
        rst.MoveNext
Loop
Puoi usare anche While... Wend, non è lì l'errore.
Sempre che tu non volessi aggiungere un record anziché
editarne uno già esistente.
Poi potevi anche scegliere per la variabile locale Risult
un nome diverso da [Risult] nome di un campo.
Poi hai mescolato ciò che è proprio di una Sub (azione:
modifica record) con ciò che è proprio di una Function
(fornire come risultato una stringa).
Si può far tutto ma un po' di ordine non guasterebbe.
Prova a spiegare più chiaramente il tuo intendimento.
Bruno 

 Bruno
Vedete, la funzione è un adattamento (almeno nel mio piccolo cranio), di
un'altra perfettamente funzionante.
Il mio discorso è sempre quello di: attingere ad un recordset che
continene vari record per ogni cliente e travasare questi ultimi
all'interno di un solo campo di tipo memo.
Questo perchè devo svuotare una tabella dati del 2005, facendo restare in
memoria nelle annotazioni gli ultimi interventi effettuati per ogni
cliente.
Francamente il Risult ed ogni altro riferimento, è stato carpto dalla
precedente funzione di un'altro prog. ciò non toglie che se questa non è
idonea, va benissimo cambiare tutto.
Alla fine quello che mi interessa è far girare questi record (multipli),
in un solo campo.
Spero di essere stato chiaro.
Vi prego help me!


 cliente.
Allora forse potrebbe essere cosě:
Public Function InsArtistico(IdCliente As Long) As String
Dim rst As DAO.Recordset, Risult As String
Set rst = CurrentDb.OpenRecordset("SELECT
     [IdCliente],[DataPrestazione],[CodiceOperatore] FROM
     [QRYPrestazioniVecchie]" & _
     WHERE IdCliente =" & Forms!FRMServizi!IdCliente)
Risult = "History: " & vbnewline
With rst
  MoveFirst
  While Not .EOF
   Risult = Result & !DataPrestazione & " " & !CodiceOperatore & vbnewline
   MoveNext
  Wend
End With
rst.Close: Set rst = Nothing
InsArtistico = Risult
End Function
shevek