Visual Basic - INSERTAR DECIMALES CON INSERT INTO

Life is soft - evento anual de software empresarial
 
Vista:

INSERTAR DECIMALES CON INSERT INTO

Publicado por ifer (30 intervenciones) el 16/01/2004 19:15:05
Hola, el problema es realizar un INSERT con ADO, con independencia de la configuracion, es decir que mientras "." (punto u otro) es el separador decimal no hay problema, pero si se cambia a ","(coma) salta un error de sintaxis debido a que hago:
MyConexion.execute "INSERT INTO MYTABLA (VALOR) VALUE (" +format(0.5,"0.00")+ ")"
y el resultado es:
INSERT INTO MYTABLA (VALOR) VALUE (0,5)
como puedo solucionar esto?

una de las maneras seria abriendo la tabla asi:
MyRecordset.open "MYTABLA", MyConexion, adOpenKeyset, adLockOptimistic
MyRecordset.addnew
MyRecordset.fields("VALOR").value = 0,5
MyRecordset.update

pero esto listaria todos los registros y si contara muchos, esta linea
tardaria y seria ineficiente respecto al tiempo, entonces como?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:INSERTAR DECIMALES CON INSERT INTO

Publicado por Cecilia Colalongo (3116 intervenciones) el 16/01/2004 22:27:19
Lo que puedes hacer es cambiar el separador decimal que esté configurado en la configuración regional y reemplazarlo por un punto:

MyConexion.execute "INSERT INTO MYTABLA (VALOR) VALUE (" +Replace(0.5,GetLocaleDecimalSep,".")+ ")"

Public Const LOCALE_SDECIMAL = &HE

Public Declare Function GetUserDefaultLangID Lib "kernel32" () As Integer
Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
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 Function GetLocaleDecimalSep() As String
Dim strBuffer As String

strBuffer = String(255, " ")

GetLocaleInfo GetUserDefaultLCID, LOCALE_SDECIMAL, strBuffer, 255

GetLocaleDecimalSep = Trim(Replace(strBuffer, Chr(0), ""))

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mas sencillo

Publicado por alberto (13 intervenciones) el 21/01/2004 17:14:34
Si el número de decimales que se guardan en la BD no es importante, bastaría con usar str(0.5) en vez de format, si quieres ajustar el número de decimales a un número determinado de decimales antes deberías ajustarlos y aplicar str, la diferencia entre format (o cstr) y str es que precisamente str ignora la configuración regional y usa como separador decimal '.'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar