Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-11-2008, 20:44   #1
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
[VB6] Problema textbox su 2 pc!

Buonasera,
ho creato un programma e in un determitato form inserisco un valore in euro cioè sarebbe il prezzo...è una textbox questo valore viene salvato in un database access. se lo provo sul pc dove ciò installato visual basic se inserisco un valore come 250 o 250.50 o 250,50 non ho problemi nel primo mi inserisce 250 nei secondi 250.50. Mentre ho provato a installarlo su un'altro pc e se inserisco 250 va bene se inserisco 250.50 nel database salva 25050 mentre se inserisco 250,50 mi da errore sull'istruzione sql come mai?i due programmi sono identici. grazie
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2008, 09:29   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
Buonasera,
ho creato un programma e in un determitato form inserisco un valore in euro cioè sarebbe il prezzo...è una textbox questo valore viene salvato in un database access. se lo provo sul pc dove ciò installato visual basic se inserisco un valore come 250 o 250.50 o 250,50 non ho problemi nel primo mi inserisce 250 nei secondi 250.50. Mentre ho provato a installarlo su un'altro pc e se inserisco 250 va bene se inserisco 250.50 nel database salva 25050 mentre se inserisco 250,50 mi da errore sull'istruzione sql come mai?i due programmi sono identici. grazie
I due programmi sono identici, ma potrebbero non esserlo le versioni di Access che hai sulle 2 macchine.
Access, a seconda della versione ( intendo anche la versione di ADO ), può accettare un dato passato non proprio correttamente, interpretandolo nel modo giusto, oppure rifiutarlo.
Devi anzitutto controllare in Access se quel campo è impostato correttamente per accettare un numerico con virgola.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2008, 12:56   #3
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
I due programmi sono identici, ma potrebbero non esserlo le versioni di Access che hai sulle 2 macchine.
Access, a seconda della versione ( intendo anche la versione di ADO ), può accettare un dato passato non proprio correttamente, interpretandolo nel modo giusto, oppure rifiutarlo.
Devi anzitutto controllare in Access se quel campo è impostato correttamente per accettare un numerico con virgola.
Avevo pensato a questo problema infatti dove ciò installato visual basic ho office 2003 mentre dove ho provato sull'altro pc ho office 2007, infatti per togliermi ogni dubbio ho provato su un'altro pc che ha office2003 ma niente ho sempre il problema.cmq il campo è un numerico con precisione doppia
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2008, 14:20   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
Avevo pensato a questo problema infatti dove ciò installato visual basic ho office 2003 mentre dove ho provato sull'altro pc ho office 2007, infatti per togliermi ogni dubbio ho provato su un'altro pc che ha office2003 ma niente ho sempre il problema.cmq il campo è un numerico con precisione doppia
Se il campo è numerico con precisone doppia allora devi fare in modo di evitare che l'utente possa scrivere "250,50".
VB6 passa i decimali con il punto.
250.50 non dovrebbe creare mai problemi.
Se inoltre nella INSERT fai riferimento diretto alla TextBox ( cosa che sarebbe sempre meglio evitare ) puoi risolvere, da così :

Codice:
    strINSERT = "INSERT INTO nomeTabella (camponumero) " & _
                "VALUES (" & Text1.Text & ")"
a così :

Codice:
    strINSERT = "INSERT INTO nomeTabella (camponumero) " & _
                "VALUES (" & Replace(Text1.Text, ",", ".") & ")"
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2008, 15:10   #5
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Se il campo è numerico con precisone doppia allora devi fare in modo di evitare che l'utente possa scrivere "250,50".
VB6 passa i decimali con il punto.
250.50 non dovrebbe creare mai problemi.
Se inoltre nella INSERT fai riferimento diretto alla TextBox ( cosa che sarebbe sempre meglio evitare ) puoi risolvere, da così :

Codice:
    strINSERT = "INSERT INTO nomeTabella (camponumero) " & _
                "VALUES (" & Text1.Text & ")"
a così :

Codice:
    strINSERT = "INSERT INTO nomeTabella (camponumero) " & _
                "VALUES (" & Replace(Text1.Text, ",", ".") & ")"

Antonio sono d'accordo con te però io ho il problema che se l'importo lo scrivo con il punto per esempio 250.56 non mi considera proprio il punto cioè mi considera 25056 cosa che sul pc dove ho visual basic mi prende 250.56. E' questa la cosa strana infatti io alla textbox gli proibisco tutto tramite questa funzione:
Private Sub importo_KeyPress(KeyAscii As Integer)
'Controllo per non far inserire caratteri errati
Select Case KeyAscii
Case Is < 32
Case 44 To 46
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
per escludere la virgola basta che al posto di 44 metto 45 però ho il problema che su altri pc il punto non lo considera e se metto la virgola lo prende come carattere errato.
Cmq cerco di fare altre prove e ti faccio sapere
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2008, 17:12   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ok la sparo: non potrebbe avere a che fare con le impostazioni di formato per le cifre in Access?

In passato ho avuto un problema analogo, in un'applicazione java momentaneamente appoggiata su Access come db (per rapida prototipazione) con risultati diversi nell'inserimento di valori via SQL nei campi a doppia precisione se le impostazioni locali consideravano il punto '.' come separatore dei decimali piuttosto che separatore delle migliaia (e la virgola di conseguenza).

Non ricordo se e come abbiamo risolto, dato che una volta impostate le tabelle abbiamo migrato tutto su HSQL, il db target.

P.S.: Java dialogava con Access via JDBC, quindi la faccenda potrebbe essere diversa, non sono un esperto in materia.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2008, 09:19   #7
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
Antonio sono d'accordo con te però io ho il problema che se l'importo lo scrivo con il punto per esempio 250.56 non mi considera proprio il punto cioè mi considera 25056 cosa che sul pc dove ho visual basic mi prende 250.56. E' questa la cosa strana infatti io alla textbox gli proibisco tutto tramite questa funzione:
Private Sub importo_KeyPress(KeyAscii As Integer)
'Controllo per non far inserire caratteri errati
Select Case KeyAscii
Case Is < 32
Case 44 To 46
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
per escludere la virgola basta che al posto di 44 metto 45 però ho il problema che su altri pc il punto non lo considera e se metto la virgola lo prende come carattere errato.
Cmq cerco di fare altre prove e ti faccio sapere
"Antonio" ?

1. Problema della virgola : è forse dovuto al fatto che quando concateni la stringa Insert, quella virgola può essere interpretata come separatore dei valori ( l'errore dice che il numero dei campi non corrisponde col numero dei valori passati nella Insert... ). La soluzione è semplice. Basta trattare il numero decimale come stringa :

Codice:
    Dim val As Double
    val = CDbl(Text1.Text)
    Dim strINSERT As String
    strINSERT = "INSERT INTO nomeTabella (numero) " & _
                "VALUES (" & "'" & val & "'" & ")"
Access capirà...

2. Problema del separtore decimale : credo abbia ragione banryu, forse non è un'impostazione di Access, bensì proprio l'impostazione locale di sistema sul separatore dei decimali.
Da VB6 puoi conoscere via codice l'impostazione locale, ad esempio, con queste chiamate ( da mettere in un modulo - la Function da usare è GetDecimalSep ) .

Codice:
Public Declare Function GetLocaleInfo Lib "KERNEL32" _
    Alias "GetLocaleInfoA" _
    (ByVal Locale As Long, _
    ByVal LCType As Long, _
    ByVal lpLCData As String, _
    ByVal cchData As Long) As Long
 
Public Const LOCALE_SDECIMAL = &HE
Public Declare Function GetThreadLocale Lib "KERNEL32" () As Long
Public Declare Function GetSystemDefaultLCID Lib "KERNEL32" () As Long
Public Declare Function GetUserDefaultLCID Lib "KERNEL32" () As Long
 
Public Function GetDecimalSep() As String

    Dim LCID As Integer
    Dim Data As String
    Dim Ret As Integer
    Dim DataLen As Long
    LCID = GetThreadLocale
    Ret = GetLocaleInfo(LCID, LOCALE_SDECIMAL, Data, DataLen)
    If Ret <> 0 Then
         DataLen = Ret
         Data = Space(DataLen)
         Ret = GetLocaleInfo(LCID, LOCALE_SDECIMAL, Data, DataLen)
    End If
    GetDecimalSep = Left(Data, DataLen - 1)
 
End Function
In questo modo dovresti intercettare ogni eccezione, e riuscire ad inserire su tutti i sistemi in ogni caso ( chiaro che se su un sistema l'utente avesse fantasiosamente definito "@" come separatore decimale, dovrai gestire anche quello... ).
Perciò soluzione 1. + soluzione 2. :

Codice:
    Dim val As Double
    Dim separatoreDec As String
    separatoreDec = GetDecimalSep
    If separatoreDec = "," Then
        val = CDbl(Replace(Text1.Text, ".", ","))
    End If
    If separatoreDec = "." Then
        val = CDbl(Replace(Text1.Text, ",", "."))
    End If
    Dim strINSERT As String
    strINSERT = "INSERT INTO nomeTabella (numero) " & _
                "VALUES (" & "'" & val & "'" & ")"
Prova...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Roscosmos aggiorna le tempistiche per la...
Confermato il ritardo delle missioni rob...
L'Intelligenza Artificiale ora può...
Il data center del futuro secondo Huawei...
Spesa a domicilio senza conducente: robo...
Satoshi Nakamoto ha finalmente un volto?...
La Corea del Sud taglia fuori i bus elet...
GoPro taglia ancora: licenziato il 23% d...
Muse S Athena: la fascia che ti legge ne...
PS5 Pro e PSSR 2.0: tutti i giochi compa...
Dimensity 9600 Pro promette prestazioni ...
BMW i7 2026 adotta celle cilindriche Gen...
Cyberpunk 2077 si aggiorna su PS5 Pro co...
Valve porta Steam Link su Vision Pro per...
Google Maps: ufficiali 3 novità c...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v