Leodellari 1 Posted January 5, 2019 Report Share Posted January 5, 2019 Boas, Estou criando uma tabela no Access via código sql, e um dos campos desta tabela é Numérico. Quando vou inserir valores com vírgula como tipo Decimal não consigo, pois o ponto desaparece... Mas quando insiro valores como tipo Double, as casas decimais não desaparecem. O que eu reparei é que, quando insiro um valor manualmente na tabela que criei, se coloco vírgula, a vírgula permanece, mas se coloco ponto como separador decimal, o ponto desaparece, e o que era 10.18 vira 1018. A string para criar a tabela é a seguinte: sql = "CREATE TABLE [NomeTabela]([0] DECIMAL(18, 9) NULL, [1] nvarchar(50) NULL, " _ & "[2] nvarchar(50) NULL, [3] nvarchar(50) NULL)" E o código para inserir os valores: For i = 0 To UltLindtlm sql1 = "INSERT INTO [NomeTabela]([0], [1], [2], [3]) VALUES(@0, " _ & "@1, @2, @3)" com = New OleDbCommand(sql1, conexao) com.Parameters.Add("@0", OleDbType.Decimal).Value = ValorDecimal com.Parameters.Add("@1", OleDbType.VarChar).Value = var1 com.Parameters.Add("@2", OleDbType.VarChar).Value = var2 com.Parameters.Add("@3", OleDbType.VarChar).Value = CStr(i) Try com.ExecuteNonQuery() Catch ex As Exception Throw ex End Try Next Se troco o Decimal do código acima por Double, eu consigo inserir números com casas decimais, agora se não, não consigo... Link to post Share on other sites
M6 149 Posted January 7, 2019 Report Share Posted January 7, 2019 Eu diria que é porque a variável "ValorDecimal" não ser, na verdade, um decimal(18,9), mas sem mais informação não dá para perceber. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to post Share on other sites
Leodellari 1 Posted January 9, 2019 Author Report Share Posted January 9, 2019 É por conta do separador decimal (ponto e vírgula). Na hora de armazenar, o separador decimal passa de vírgula para ponto. Mas ao longo de toda a aplicação tenho usado a vírgula como separador decimal (nas caixas de texto e nas tabelas). Tenho feito apenas conversões de Decimal para String e String para Decimal. Quando converto para Decimal funciona normalmente. Quando converto de Decimal para String recebo um valor texto com a vírgula como separador Decimal. Por mim que o Decimal armazenasse os valores com uma vírgula como separador decimal. (Tenho criado apenas campos nvarchar nas tabelas... mas agora precisei resgatar valores em ordem crescente, e para isso o campo tem que ser numérico). As soluções que encontrei foram: armazenar a variável Decimal com o OleDbType.Double, e armazenar a variável com o OleDbType.Char, ou OleDbType.Varchar. Não sei se tem outra solução para armazenar os valores com o OleDbType.Decimal... Enfim, o programa está funcionando normal aqui... Estou conseguindo armazenar os valores. Link to post Share on other sites
M6 149 Posted January 9, 2019 Report Share Posted January 9, 2019 Isso é parametrizável de certeza, mas tipicamente trabalha-se com o . como separador decimal, embora ao nível da visualização por vezes se mostre a ,. 1 Report 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now