Come salvare un colore in un campo di un db?

mercoledì 21 dicembre 2005 - 12.41

GuardianOfTheFlame Profilo | Junior Member

Ciao a tutti,
devo leggere e scrivere da/su un database ( uso MS Access 2003) il colore di un oggetto linea sul database. Come devo creare il campo (integer?) e come devo gestire il salvataggio? Ci sarà un modo + furbo di creare un immenso select x ogni colore (System.Drawing.Color) quando leggo/scrivo!

Grazie a tutti,
Salo

P.S.: in realtà uso Visual Studio 2005 Professional quindi il framework è il 2.0, ma l'opzione ancora non c'è!

schifidus Profilo | Junior Member

Cosa intendi per un immenso select? Bisognerebbe capire la tua reale necessitàma io ti consiglio di serializzare l'oggetto in un file di testo (XML o vedi tu).

Brainkiller Profilo | Guru

>Ciao a tutti,
>devo leggere e scrivere da/su un database ( uso MS Access 2003)
>il colore di un oggetto linea sul database. Come devo creare
>il campo (integer?) e come devo gestire il salvataggio? Ci sarà
>un modo + furbo di creare un immenso select x ogni colore (System.Drawing.Color)
>quando leggo/scrivo!

Perchè non immagazzinare semplicemente la tripletta di RGB in esadecimale o sottoforma di tre interi ?
#FFFFFF in un varchar oppure 255,255,255, 3 campi interi, oppure serializzandolo come già consigliato ma mi sembra una cosa troppo macchinosa per lo scopo.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

GuardianOfTheFlame Profilo | Junior Member

Grazie a tutti,
Credo di essermi spiegato male. In pratica ho su un oggetto che rappresenta un disegno un insieme di oggetti Linea, Rettangolo, TextBox. Ognuno di questi viene salvato in un'apposita tabella di un db con le sue varie proprietà (Id, Posizione, etc.). Tra queste, devo salvare anche il colore dell'oggetto.
Quando carico il disegno, in pratica leggo tutti i record nella tabella Linee ( analogamente x gli altri oggetti nel disegno ) e le ricreo secondo le informazioni contenute nel database.
Ho risolto in questa maniera e mi sembra funzioni:
1) al salvataggio del disegno, salvo l'informazione del colore con l'istruzione (scrivo sul db):
drRiga("Color") = ColorTranslator.ToWin32(Disegno.LineColor)
dove drRiga è un DataRow e la proprietà LineColor dell'oggetto Disegno (istanza di Metadraw) è di tipo System.Drawing.Color
2) al caricamento del disegno, creo l'oggetto nel metadraw con l'istruzione (leggo dal db):
Disegno.LineColor = ColorTranslator.FromWin32(drRiga("Color"))

in pratica ColorTranslator mi trasforma un tipo Color in un intero, per esempio il nero lo salva come 0.
Vi pare giusto?

Brainkiller Profilo | Guru

>in pratica ColorTranslator mi trasforma un tipo Color in un intero,
> per esempio il nero lo salva come 0.
>Vi pare giusto?

Si va bene anche così.
Cmq. ripeto che la serializzazione in questo caso è la cosa migliore perchè trasforma un oggetto, una serie di oggetti o addirittura una gerarchia dala memoria a file su disco o database. E al contrario li ripristina da disco in memoria.

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5