Newsgroup: it.comp.lang.visual-basic
Titolo: Combobox come in html

Ho un problema che mi dà parecchio da pensare: come devo fare a creare un
oggetto combobox come la <select> in html? Esiste appunto il controllo
ComboBox, ma in un form html io posso specificare il valore che voglio
mostrare all'utente e il valore che in realtà il form deve spedire, ovvero
posso fare
<select name="combo">
  <option value="valore1">Nome1</option>
  <option value="valore2">Nome2</option>
  <option value="valore3">Nome3</option>
</select>
In realtà quello che viene spedito dal form è valore1, valore2 o valore3,
non Nome1, Nome2 o Nome3.
Finora in vb ho creato un vettore in cui andare a memorizzare questi valori
(mentre nella ComboBox scrivo i nomi), ma è un metodo che non mi piace molto
e che può dare problemi.
C'è un'altra soluzione?
Grazie.

 C'è un'altra soluzione?
proprietà itemdata. è un po' ferragginosa, ma dovrebbe servire al tuo scopo
Salutoni
Sergio

 C'è un'altra soluzione?
vedi  .itemdata e .newindex, ma puoi specificare solo long, niente stringhe.
termoPilucco.

 vedi  .itemdata e .newindex, ma puoi specificare solo long, niente
stringhe.
Era quello che temevo :(
Non c'è una soluzione al mio problema? Il fatto è che devo caricare in una
ComboBox dei dati presi da database da tabelle con chiave primaria stringa..

 primaria stringa..
Potresti dare una occhiata al controllo dbcombo, forse.
Salutoni
Sergio

 non Nome1, Nome2 o Nome3.
ho riletto l'ultimo tuo post, secondo me ti conviene sempre il vettore,
cambia punto di visualizzazione, per te' quello che comanda e' il combobox,
bene , cambialo in questo modo :
quello che comanda e' un vettore bidimensionale :
Vett (0,0) = "Valore1"  |  Vett (0,1) = "Nome1"
Vett (1,0) = "Valore2"  |  Vett (1,1) = "Nome2"
e il combo box ti serve solo a visualizzare i tuoi dati, anzi, con un po di
accortezza potresti usare una tabella stessa del tuo Db usando l'index del
combo ( o il combo.text ) come discriminante per ritrovare il tuo record !

 wrote in message
news:nSDHa.190424$g92.3...@news2.tin.it...

Un dictionary?
La combo box, se non ricordo male, associa ogni riga ad un numero di indice:
1: pizza
2: fichi
3: prosciutto
4: soreta
il dictionary (scripting.dictionary object) associa qualcosa ad una chiave
unica, e ogni volta che gli passi quella chiave ti restituisce il valore (o
l'oggetto !) ad essa associato.
Quindi ogni volta che popoli la combo box devi anche aggiungere una chiave
al dictionary ed e' semplice:
la combo box
1: pizza
2: fichi
3: prosciutto
4: soreta
il dictionary
objDict(chiave) = dati
se la chiave esiste verra' sovrascritta, se non esiste verra' creata (o in
alternativa usa il metodo ADD per specificare che stai aggiungendo la
chiave, ma allora attento ai doppioni).
objdict(1) = "portata"
objdict(2) = "frutta"
objdict(3) = "contorno"
objdict(4) = "commensale"
e poi quando passerai i dati per riavere la voce associata all'elemento
selezionato dovrai fare miovalore = objdict(indice della combo box) e dentro
miovalore, se l'indice della voce selezionata e' 3 (ad esempio) troverai
"contorno".
Se poi le voci presenti nella combo box sono uniche puoi usare quelle come
chiavi del dictionary, rendendolo ancora piu' comodo.
Ciau
Andrea

 ho riletto l'ultimo tuo post, secondo me ti conviene sempre il vettore,
[cut]
Per ora uso un'altro controllo ComboBox invisibile (che schifo di soluzione
^__^) che contiene le chiavi dei record della tabella (fortuna che la chiave
non č multipla, altrimenti quante altre combo avrei dovuto fare? -__^).
Adesso perņ ho un'altra domanda: sto cercando di inserire record in un db
SQL Server ma non riesco proprio a passargli una data correttamente (da
memorizzare in un campo di tipo DATETIME).
Compongo lo statement sql dinamicamente, ho provato a scrivere la data in
tutti i modi possibili (meno quello giusto ovviamente ^__^) e non ci salto
fuori (dt č in un formato di data valido e di questo ne sono certo). Ho
provato con
"INSERT INTO tabella (data) VALUES (" & CDate(dt) & ")"
"INSERT INTO tabella (data) VALUES ('" & CDate(dt) & "')"
"INSERT INTO tabella (data) VALUES (#" & CDate(dt) & "#)"
Ho anche provato a creare questa funzione per formattare la data
Private Function MyDate(dt As Date)
    MyDate = Year(dt) & "-" & _
        Right("0" & Month(dt), 2) & "-" & _
        Right("0" & Day(dt), 2) & " " & _
        Right("0" & Hour(dt), 2) & ":" & _
        Right("0" & Minute(dt), 2) & ":" & _
        Right("0" & Second(dt), 2) & ".000"
End Function
e ho quindi poi scritto la query

 e ho quindi poi scritto la query
"INSERT INTO tabella (data) VALUES (#" & MyDate(CDate(dt)) & "#)"
Ma viene generato un errore.
Come posso fare?

 Come posso fare?
bha ho letto che sql gestisce le date in #AAAAMMGG# non ci giurerei, per me
i campi data non esistono ^_^
Uso stringhe di 8 caratteri AAAAMMGG che poi converto in numeri
all'occorrenza !


Sě, anche io userei volentieri questa strategia, anzi, l'ho sempre usata in
passato utilizzando Access con le ASP.
Ma sai com'č, il lavoro che sto facendo č per una tesina di basi di dati
(sono ancora universitario, eheheh ^__^) e se non uso campi data poi magari
la prof se ne ha a male (sebbene funzionerebbe meglio un campo stringa),
allora per ora sto alle sue regole ^__^

Con SQL server ti basta passargli la data come stringa...
SET campo_data='gg/mm/aaaa hh:mm:ss'
oppure
SET campo_data='gg-mm-aaaa hh:mm:ss'