Ir para conteúdo

POWERED BY:

Arquivado

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

Fells

[Resolvido] ASP / SQL Server - Chave primária

Recommended Posts

Bom dia pessoal...

 

A duvida da vez é a seguinte...

 

Desenvolvo em ASP e uso o SQL Server.

 

Meu cliente pediu que ao inserir um novo cadastro no BD a chave primária fosse algum número usando o ano corrente. Logo eu teria que desenvolver algum código em ASP que passa pro SQL Server os dados do formulario que o cliente preencheu e a chave primária que o código vai gerar.

Teria que ser algo assim 201100001; 201100002;201100003 ..... 201100156... e por ai vai. E quando mudar o ano (por exemplo de 2011 para 2012) alteraria o ano da chave e o numero sequente voltaria ao inicio, ou seja, passaria a ser assim 201200001; 201200002; 201200003 ... 201200156...

 

Alguem tem alguma luz para me dar?

Agradeçooo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tipo de cliente é esse? Algum tipo de cientista da computação?

 

Bem, sua dúvida esta em que exatamente?

Como gerar o sequencial? Como armazenar o sequencial? Como recuperar o sequencial?

Vai fazer no BD, usando gatilhos, ou no código ASP mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode pegar os numeros que quiser e depois concatená-los na sua string e depois quando for alterar apenas troque a sequencia pelo que quer....

use o INSERT para inserir no bd e UPDATE para atualizar os valores

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte... meu codigo ASP de inserção no BD é basicamente isso aqui:

Quero fazer algo que insira no SQL um id(PK) como o que informei que tinha que ser.

Pq depois é depois pq tem mais coisas... mais o importante é gerar o id e inserir no banco e no proximo formulario preenchido aumentar mais 1 no id e quando mudar o ano mudar o começo de 2011000xx para 201200001.

 

'________________________________________________________________________________________________
	'Recolhemos os valores do formulário que o cliente preencheu
'________________________________________________________________________________________________

Cliente = Request.Form("requiredCliente")
Distribuicao= Request.Form("requiredDistribuicao")
Emitente= Request.Form("requiredEmitente")
Data = Request.Form("requiredData")
Assunto = Request.Form("requiredAssunto")

'________________________________________________________________________________________________
	'Instancio e abro oo objeto conexão
'________________________________________________________________________________________________

	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open Session("Gestao_conn")

'________________________________________________________________________________________________
'crio a sentença SQL
'________________________________________________________________________________________________


sSQL="Insert Into ContEng_AtaVisita (Cliente, Distribuicao, Emitente, Data, Assunto) values ('" & Cliente & "','" & Distribuicao & "','" & Emitente & "',convert(smalldatetime,'" & Data & " ',103),'" & Assunto & "')"

'________________________________________________________________________________________________
'Executo a ordem
'________________________________________________________________________________________________

set RS = Conn.Execute(sSQL)

<font size = 3><b><div align="center">Registro Inserido</div></b></font>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode gerar seus códigos seguinto esta lógica desta função que criei, GetRndNomeArq cria com base mo tempo aleatório nome do arquivo constituído por cerca de 20 a 30 caracteres. Isso é útil para a criação de inúmeros nomes dentro de um único arquivo, garantindo ao mesmo tempo que cada um tem um nome diferente.

 

GetRndNomeArq usa vbscript da função Timer para gerar o nome do arquivo que são numéricos e podem ou não ter zeros à esquerda. A extensão do arquivo é especificadas e deve incluir a extensão e caracter ".". Uma extensão válido seria ". txt".

 

Um exemplo dos nomes dos arquivos criados pela função pode ser:

0234254326346346.TXT (se você especificou uma extensão .TXT)

 

e depois você apenas dá um UPDATE na onde quer alterar usando left ou right

 

 

sintaxe:

 

 

string = GetRndNomeArq(dotextension)

 

exemplo:

 

 

<%
dim fileName

fileName = GetRndNomeArq(".txt")
%>

 

code:

 

<%
function GetRndNomeArq(byval dotextension)
   randomize
   getfilename = _
       clng(clng(timer * Rnd(timer)) + timer) & _
       clng(clng(timer * Rnd(timer)) + timer) & _
       clng(clng(timer * Rnd(timer)) + timer) & dotextension
end function
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ser um pouquinho mais claro por favor galera... eu sou estagiba de TI e não manjo mto...

Pra não dizer que não entendi nada vou pedir algo mais simples de se fazer... é possivel? kkkk

 

Fui la no SQL Server e desabilitei o identity, identity seed e identity increment. Agora ele não eh mais auto-incrementavel...

Agora tenho que fazer no meu AtasInserir. asp um código que gere o ID pra fixar no banco e no proximo registro adicionar mais um nesse ID ou seja um é 201100001, no proximo 201100002... e assim por idante até que o ano seja <= ao ano atual(2011)... virou o ano o codigo verifica se mudou o ano e começa o id com 201200001; 201200002....

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa a mesma lógica para gerar uma sequencia de ID como te passei acima depois dá um INSERT no bd

Compartilhar este post


Link para o post
Compartilhar em outros sites

[Resolvido]

 

Ae galera, resolvi meu problema assim:

Exclui a coluna ID que era chave primaria auto incremental

Adicionei novamente, no Identity deixei yes, no Identity Seed coloquei 201100001 e salvei.

O SQL numerou a coluna ID das tabelas só que com esse numero que determinei 201100001, 201100002.... e assim por diante.

Depois disso, Desabilitei o Identity.

 

No código fiz:

       'Minha sentença onde estou determinando para selecionar o ultimo ID da tabela
InsSql = "select top 1 * from ContEng_Cartas order by Numero desc"
set Ins = Conn.Execute(InsSql)

       'Criei uma variavel, adicionei o valor do ultimo registro e somei 1 que será o proximo ID
Varx = Ins.Fields("Numero")+1

       'Inseri no banco junto com os outros dados do formulário
sSQL="Insert Into ContEng_Cartas (Numero, Tabela2, tabela3) values ('" & Varx & "','" & ValorTabela1 & "','" & ValorTabela2 & "','" & ValorTabela3 & "')"

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.