Newsgroup: it.comp.lang.visual-basic
Titolo: Controllo utente - SQL

Sto cercando di creare un controllo utente con alcune proprietą
(select,where,order) tali da poter poi generare una stringa per l' SQL.
Tutto bene quando si inseriscono dei valori assoluti.
Il problema nasce quando si deve utilizzare il valore di una variabile o di
un textbox.
Problema tale che, se non risolto, rende inutile il tutto.
Qualcuno di Voi conosce il modo di risolvere il problema?
Grazie, Sauro

Qualcuno di Voi conosce il modo di risolvere il problema?
Sapessimo qual e' il problema :-(
-- 
ciao, hal

 ciao, hal
Ok, non sono stato chiaro.
Per esempio:
MioControllo.PropStringa="SELECT * FROM TabName WHERE TabName.FieldName =
'Key'"
Dim StringaSQL as String
Dim NomeRS as Recordset
Set NomeRS = PublicDB.OpenRecordset(StringaSQL)
...... Così funziona
Se invece sostituisco la prima istruzione (non da codice ma come proprietà
del controllo):
MioControllo.PropStringa="SELECT * FROM TabName WHERE TabName.FieldName = '"
& NomeTextBox.text & "'"
Non funziona perchè i simboli & vengono considerati come caratteri e non
come concatenamenti, perciò non funziona.
Spero di essermi spiegato.
Ciao, Sauro

 come concatenamenti, perciň non funziona.
Questa non mi torna proprio (i caratteri & presi come tali e non come
concatenamento, intendo dire).
La sintassi (ho controllato apicini singoli e doppi) mi pare corretta. E'
davvero scritta cosě nel tuo codice?

 davvero scritta così nel tuo codice?
No.
E' scritta così nella finestrella "Proprietà".
Praticamente vuole fare un binding fra textbox ed il suo controllo.
Credo si debba mettere un analizzatore sintattico dentro allo usercontrol,
che prenda la proprietà con la stringa SQL, e verifichi se occorre andare
nei controls del container a prendere dei valori.
Ciao
Alberto

 davvero scritta cosě nel tuo codice?
Alberto ha centrato il discorso anche se io non so cosa sia un binding.
Non so neanche cosa sia un analizzatore sintattico ma, ad intuito, credo
proprio che sia quello che mi serve.
Ciao, Sauro

 Alberto
Si, hai grosso modo centrato i miei obiettivi.
Mi sono documentato sul binding.
Non ho invece trovato niente sul "analizzatore sintattico"
Protresi, per favore, darmi maggiori informazioni?
Grazie e ciao, Sauro

 Protresi, per favore, darmi maggiori informazioni?
Non è che l'analizzatore sintattico sia un software o un ocx.
Semplicemente significa scrivere una funzione che prenda una stringa, la
scorra ben bene, e, conoscendo le regole sintattiche, capisca cosa contiene
la stringa.
Hai presente quando su MSDN trovi
connection.Open ConnectionString [[[[, UserID]] [, Password]] [, Options]]
questa è una regola sintattica.
Quindi, se trovi una stringa che inizia per il nome di una connection
prosegue con .Open ed uno spazio
poi c'è un valore rappresentato da una stringa
poi potrebbe esserci una virgola ed un altro valore
poi potrebbe esserci una virgola ed un altro valore
poi potrebbe esserci una virgola ed un altro valore
allora è la sintassi del metodo .Open della Connection
Sta a te scrivere l'analizzatore che elabori la stringa.
Ti avverto che sarà una lavorata da matti, se vuoi fare una cosa flessibile.
Molto più agevole, secondo me, è comporre la stringa a run-time e passarla
all'Ocx un attimo prima di eseguire il metodo.
Ciao
Alberto

 E' scritta così nella finestrella "Proprietà".
Ah.

 ha scritto:

Ho grosso modo capito.
C'è però un ostacolo insormontabile (almeno per me fino ad ora).
Faccio un esempio semplice:
Dim Numero as integer
Numero = NomeVar
Se NomeVar è una stringa che contiene il nome di una variabile integer che
contiene a sua volta un valore numerico non c'è modo di farlo funzionare.
Ho fatto mille tentativi senza successo.
In altri linguaggi funziona.
Per esempio in clipper:
Numero = &NomeVar
Il clipper (con il simbolo iniziale &) capisce che non ci si riferisce a
NomeVar come stringa ma come nome di un oggetto (o qualcosa di simile).
Probabilmente quello che cerco io non esiste in VB.
........
Sono un principiante di VB, per il momento sto facendo delle prove per
capire bene come funziona:
- dei controlli utenti
- delle funzioni
- ecc.
Sai, tutte quelle cose che poi ti permettono di non riscrivere continuamente
lo stesso codice dove cambia solo qualche dettaglio (credo si dica: crearsi
il proprio ambiente).
Grazie (anche a Lupo)  per le spiegazioni che mi avete dato anche in altre
occasioni.
Ciao, Sauro.

 - delle funzioni
Mmmmmhhhh....
Nel primo post parlavi di Controllo Utente con cui volevi preparare stringhe
SQL ecc....
Se stai iniziando, forse conviene cominciare da qualcosa di piů
abbordabile...
Ad esempio, invece di un controllo utente realizza una classe.
E' comunque un buon esercizio, ciň che otterrai potrai portarlo dentro ad un
controllo utente quando avrai piů dimestichezza, ma inizialmente non ti
rovinerai la vita con problematiche di registrazione degli Ocx, Container,
ecc....
Ciao
Alberto