Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-11-2008, 21: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, 10: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, 13: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, 15: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, 16: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, 18: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, 10: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


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Tesla Model 3 superata per la prima volt...
AMD ha già risolto la crisi della...
La “batteria di Baghdad” funziona davver...
Pannelli solari al contrario? Non propri...
Google Gemini si espande: arrivano le es...
Mercato TV: la leadership di Samsung reg...
L'AI che lavora 100 volte più vel...
LIDAR, battaglia finale: MicroVision met...
Il 2025 è stato l'anno di BYD: +2...
L'IA enterprise entra nella fase decisiv...
Il tiktoker Khaby Lame cede la sua socie...
Apple Pencil Pro scende a 122€ su Amazon...
Ring in forte sconto su Amazon: videocit...
Blink torna a fare sul serio: Mini 2K+ c...
Edison aveva creato il grafene senza sap...
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: 18:43.


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