Salvare numero a 7 cifre in database con MFC C++

di vale88 il
5 risposte

In un database ho un colonna di tipo INT al cui interno devo salvare un COLORREF, che in genere è un numero a 7 cifre, il problema è che quando salvo il numero col codice c++ utilizzando il SetFieldValue viene salvato un altro numero, spesso negativo, ma non capisco il motivo.

5 Risposte

  • Il valore del colore espresso in cifra non è un intero. dovresti convertirlo in intero e poi memorizzarlo. al momento di richiamarlo devi riconvertirlo.

  • Non è così Andrea.

    Un COLORREF altro non è che una DWORD ovvero un intero senza segno a 32 bit.

    Vale88 se usi un INT vedrai rappresentato il valore con il segno ma quando lo rileggi in un COLORREF sarà tutto corretto quindi non temere.

    Se proprio vuoi, ma non è necessario, per il DB puoi usare un UINT

  • 13/06/2025 - oregon ha scritto:

    Non è così Andrea.

    Un COLORREF altro non è che una DWORD ovvero un intero senza segno a 32 bit.

    Vale88 se usi un INT vedrai rappresentato il valore con il segno ma quando lo rileggi in un COLORREF sarà tutto corretto quindi non temere.

    Se proprio vuoi, ma non è necessario, per il DB puoi usare un UINT

    Sto vedendo che per il tipo di dati nel database posso usare TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, BIT, cosa sarebbe meglio? 

    Quindi se salva un altro numero poi quando lo rileggo con COLORREF sarà il numero corretto?

  • Va bene un INT

    Rileggerai il tuo COLORREF (leggi in un int e applichi il cast a COLORREF)

  • 13/06/2025 - oregon ha scritto:

    Non è così Andrea.

    Un COLORREF altro non è che una DWORD ovvero un intero senza segno a 32 bit.

    Vale88 se usi un INT vedrai rappresentato il valore con il segno ma quando lo rileggi in un COLORREF sarà tutto corretto quindi non temere.

    Se proprio vuoi, ma non è necessario, per il DB puoi usare un UINT

    Grazie mille, è esattamente come dici

Devi accedere o registrarti per scrivere nel forum
5 risposte