Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dataset

CLng - CDbl

Recommended Posts

Olá pessoal...

 

Uso o PostgreSQL... tenho uma tabela de Títulos e o sequenciador está com a valor de: 1000901200200

 

Preciso adicionar novos registros. Fiz um select pra retornar o sequenciador atual e somar + 1.

 

Pegando o valor atual que está na Base de Dados:

    codTit = 0
   strSQL = "SELECT last_value FROM Titulos_codTit_seq"
   tabRec.open strSQL, conSTR,3,3
   codTit = tabRec("last_value")
   tabRec.Close

 

Na variável codTit então eu tenho o valor: 1000901200200

 

Acontece que dentro do meu WHILE eu faço:

 

codTit = codTit + 1

 

Daí da um erro de:

Microsoft VBScript runtime error '800a000d'

Type mismatch

/produto/frontend/titulos/titulos.asp, line 240 

 

Daí tentei usar o CLng:

    codTit = 0
   strSQL = "SELECT last_value FROM Titulos_codTit_seq"
   tabRec.open strSQL, conSTR,3,3
   codTit = CLng(tabRec("last_value"))
   tabRec.Close

 

Deu esse erro:

Microsoft VBScript runtime error '800a0006'

Overflow: 'CLng'

/produto/frontend/titulos/titulos.asp, line 177 

 

Mas também deu erro... acredito que as limitações não deixam usar o CLng

 

Não to conseguindo somar + 1 na variável codTit.

 

Eu dei um response.write na variável codTit assim:

    codTit = 0
   strSQL = "SELECT last_value FROM Titulos_codTit_seq"
   tabRec.open strSQL, conSTR,3,3
   codTit = tabRec("last_value")
   tabRec.Close

   response.Write VarType(codTit)
   response.end

 

E retornou 14: Decimal

 

Mas não consigo adicionar + 1 dentro do WHILE.

 

O que devo fazer ???

 

Já pesquisei mas não consigo fazer funcionar.

 

Valeu pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o tipo de dados no seu bd ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então quando eu criei a tabela titulos, automaticamente o PostgreSQL cria uma tabela que é Sequences, nesse caso essa tabela foi criada com o nome: titulos_codtit_seq.

 

Então fiz um select nessa tabela sequenciadora pra pegar o próximo registro.

 

Tabela títulos criada por mim:

CREATE TABLE Titulos (
 codTit BIGSERIAL,
 codEnt INTEGER NOT NULL,
 dtVenc TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL,
 CONSTRAINT Titulos_pkey PRIMARY KEY(codTit)
) WITHOUT OIDS;

 

Tabela sequenciadora criada automaticamente pelo PostgreSQL:

CREATE SEQUENCE public.titulos_codtit_seq
 INCREMENT 1 MINVALUE 1
 MAXVALUE 9223372036854775807 START 1
 CACHE 1;

 

Como na tabela títulos o tipo é BIGSERIAL, acredito que na tabela sequenciadora o last_value também será BIGSERIAL, não sei.

 

Eu dei um select nessa tabela, pra pegar o valor:

    codTit = 0
   strSQL = "SELECT last_value FROM Titulos_codTit_seq"
   tabRec.open strSQL, conSTR,3,3
   codTit = tabRec("last_value")
   tabRec.Close

 

Daí quando vou incrementar +1 na variável codTit, dá o problema de dados incopatível.

 

Problema sério, não sei o que fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste aqui com o numero que você disse estar no db (1000901200200), e consegui exito.

Você chegou a testar assim?

 

codTit = CDbl(tabRec("last_value")) + 1

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.