Newsgroup: it.comp.appl.access
Titolo: Utilizzo di Eval con argomento che fa riferimento a campi di recordset

Non riesco a capire se Eval può essere utilizzata per restituire il valore di un 'espressione stringa che contiene al
suo interno riferimenti a campi di recordset.
E se è possibile, come devo utilizzarla.
Se [Segno] è un campo di un recordset rsDati aperto, perchè:
- Eval("[Segno]='A'") dà errore 2482 (Impossibile trovare il nome 'Segno' specificato nell'espressione) ?
- Eval("rsDati![Segno]='A'") dà il medesimo errore (Impossibile trovare il nome 'rsDati' specificato nell'espressione) ?
Grazie
Vincenzo Turturro
Certificato Eucip Core Level
ITA 0000-002299 del 14/05/2007
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------
risorse Access:
http://www.accessgroup.it
---------------------------------------------
Il sito comune di it.comp.as400
http://www.faq400.com
---------------------------------------------

 Vincenzo Turturro
Ciao Vincenzo.
EVAL da quanto ne sò ttiva l'interprete VB/A che dovrebbe valutare il
contenuto stringa
di quanto inserito come parametro...!
Se fai una prova di qusto tipo:
Debug.Print EVAL("GetSegno()")
E in un modulo scrivi:
Public Function GetSegno()
     GetSegno=rsDati![Segno]
End Function
ovviamente dando per scontato di avere il Recordset aperto, vedrai che
funziona...
Un problema è che scritto come lo hai scritto tu ti aspetti un'assegnazione
e questo non è possibile...!
rsDati![Segno]='A'
Ma anche solo leggendo non funziona in quanto il valutatore di espressioni
non riconosce gli Oggetti, in quel modo.
Infatti anche scrivendo la sintassi in questo modo:
MsgBox Eval("rsDati!(""""Segno"""")")
viene restituito l'errore che hai segnalato...
ma se scrivo
MsgBox EVAL("GetSegno()")
funziona regolarmente...!
Ora non hai specificato di preciso la tua esigenza, ma spero sia utile la
mia osservazione.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

(.....)

L'esigenza è presto (!) detta.
Vorrei (forse è più esatto dire volevo, date le difficoltà che sto incontrando) implementare una funzione per effettuare
stampe su file ascii.
Attenzione: non l'esportazione di un qualche file, ma proprio un file ascii piatto contenente una stampa che poi invio
alla stampante (ad aghi) con il banale copy file.txt lpt1:
L'idea era quella di avere una serie di tabelle descrittive delle stampa:
- una tabella per i nomi delle stampe e le caratteristiche generali (origine record, lunghezza in righe della pagina,
larghezza in caratteri della pagina ecc.)
- una tabella che descrive la struttura della stampa (l'intestazione della stampa, l'intestazione di pagina, le righe di
corpo ecc. con le spaziature verticali relative)
- una tabella che descrive in dettaglio ogni elemento della tabella precedente; per esempio, per la riga di dettaglio:
quali campi stampare, in quale posizione nella riga, con quale formato ...
Ed è qui che mi servirebbe la possibilità di usare Eval su nomi di campo, soprattutto quando devo stampare valori che
non derivano direttamente dal campo, bensì da un 'espressione basata su di esso.
Il tuo suggerimento, per quanto valido, non è applicabile al mio caso.
Se hai qualche altra idea ...



E' molto facile che io abbia capito male o limitatamente a quanto ho in
mente io, ma è anche normale...!
La tua esigenza così come l'hai esposta non è gestibile come hai chiesto per
i motivi detti, ma non capisco cosa ti impedisca di scrivere una Funzione
VBA che prepara la struttura...!
Tu puoi scrivere nella tabella la Funzione direttamente con i Parametri ed
EVAL interpreta la funzione con i parametri.
Es.:
EVAL ("NomeFunzione(" & Param1 & "," & param2 & ")")
se param1 e param2 sono numerici quanto scritto equivale a :
NomeFunzione(param1,Param2)
Se sono stringhe devi usare i Doppi DoppiApici o le chr(34) ma questo lo sai
di certo...!
Ora sia il Nome della Funzione che i parametri puoi recuperarli da un Rs ed
invece di passarli come
EVAL("Rs![Campo]")
lo passerai come stringa:
EVAL(rs![Campo])
Come dicevo è molto facile che non riesca a calarmi nella tua esigenza e
magari ti ho risposto
tutt'altro rispetto a quanto chiedevi....


magari ti ho risposto tutt'altro rispetto a quanto chiedevi....


 ha scritto nel messaggio
news:s9b1c3h7n9p0iovkh...@4ax.com...

Credo possa essere un'errore di sintassi nella costruzione della stringa...
sulla quale spesso anch'io mi sono perso...!
EVAL("GetCampo('[CD_Movimento]'") ti funziona...? Dovrebbe essere [SI]
Tieni presente che un DSUM così deve funzionare:
DSum("Importo","Movimenti","Segno='D' AND CD_Movimento=
GetCampo('[CD_Movimento]')")
Ora come passi una stringa di questo tipo...?
DSum("Importo","Movimenti","Segno='D' AND CD_Movimento=
GetCampo('[CD_Movimento]')")
Viene così...?
EVAL("DSum(""""Importo"""",""""Movimenti"""",""""Segno='D' AND CD_Movimento=
GetCampo('[CD_Movimento]')"""")")
Se non viene così come ipotizzavo potrebbe essere un problema di
costruzione, ma dovrei fare qualche test anch'io.
Se non risolvi nemmeno con questa mia ultima ipotesi, e ti va di inviarmi un
Demo riassuntivo posso provare, solo per conferma immagino, certe volte "Two
is mey che One".
