|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 2147
|
[VBNET]HELP su come salvare alcuni dati
devo salvare in un db alcuni dati ma vorrei concatenarli in un unico valore.
mi spiego, ho una checkedlistbox con una serie di righe (eventualmente aggiungibili tramite altro codice) come queste: DOCUMENTO1 si DOCUMENTO2 si DOCUMENTO3 no DOCUMENTO4 si DOCUMENTO5 no ... vorrei poter salvare un SOLO campo al posto di tanti boolean legati alle singole voci, mi è venuto in mente di usare un semplice codice binario a x bit, in questo caso avrei 5bit e risultato 11010 considerate che i documenti possono arrivare anche ad una 30ina ma non credo che ci siano problemi a dover gestire una stringa come questa 010111110100001001011001110010 e riempire una checkedlistbox a dovere... è una stupidaggine? esiste un modo migliore? troverò dei problemi a gestire una stringa del genere? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
troverai problemi se per qualche motivo le tue righe "cambiano" di posizione, in quanto non hai modo di legare i valori di quella stringa binaria ai valori di DOCUMENTO1 DOCUMENTO2 ecc ecc se non per la loro posizione...
A questo punto se vuoi risolvere il problema potresti crearti una classe serializzabile tipo Codice:
[Serializable]
[DataContract]
public class documentoValore
{
[DataMember]
public string NomeDocumento
{
get{};set{};
}
[DataMember]
public bool ValoreDocumento
{
get{};set{};
}
}
Ovviamente quando lo vai a riprendere dal db te lo deserializzi e ti ritroverai il tuo bel array di documentoValore con tutto quello che ti serve..... Altra soluzione è convertire le tue coppie in un DataTable di due colonne e n righe Codice:
var dt = new DataTable();
dt.Columns.Add("Nome", Type.GetType("System.String"));
dt.Columns.Add("Valore", Type.GetType("System.Boolean"));
foreach(var s in checkedlistbox.Items) //è solo un esempio sistemalo con quello che hai tu Codice:
dt.Rows.Add(s, valore(s)); quando lo vai a riprendere puoi usare il comodissimo ReadXml del datatable e per magia ti ritrovi tutte le tue coppie di valori. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 2147
|
Quote:
provo come mi hai suggerito e vedo come procedere. grazie! p.s. un poco sono ancora convinto che il mio metodo non sia proprio da buttare... |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
il problema principale del tuo approccio é che é troppo "tagliato giusto" per il tuo caso.
hai 32 bit (la gestione dei bit su campi bigint su sql server, anche su macchine x64 non é velocissima) e 30 documenti. se vi gira di aggiungere 3 documenti sei fottuto. il campo xml non é una brutta soluzione, ma non amo la soluzione offerta da sneeze (ma solo perché odio presentare concetti come DataTable troppo in alto nella struttura) |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 2147
|
Quote:
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
Quote:
da un lato l'illeggibilità della maschera di bit, dall'altro la lentezza del lavoro su stringhe :P |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 2147
|
Quote:
che proponi? |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:29.




















