SQL GERANDO ID
Com o codigo abaixo gero numero sequencial corretamente, agora tenho uma dúvida:
tenho um campo (MES) onde quardo o seguinte texto;
JANEIRO/2011 com o numero de Id (Controle) 0001
na sql abaixo como faço a pequisa se igual a JANEIRO/2011 eu somo + 1, se diferente, ou seja, FEVEREIRO/2011 eu começo de 0001? Nõ sei se fui claro!
Private Sub GeraID()
[ô]Gerando codigos sequenciais de acordo com o ultimo reg
Set RstID = New ADODB.Recordset
If RstID.State = 1 Then _
RstID.Close
RstID.Open [Ô]SELECT DISTINCT MAX(Controle) AS Controle FROM Dados[Ô], _
ConexaoCartao, adOpenForwardOnly, adLockReadOnly
With RstID
If .EOF = True And .BOF = True Then
N_ID = [Ô]1[Ô]
Else
.MoveLast
N_ID = Val(.Fields([Ô]Controle[Ô])) + 1
End If
Txt_ID.Text = Format(N_ID, [Ô]0000[Ô])
End With
RstID.Close
Set RstID = Nothing
End Sub
tenho um campo (MES) onde quardo o seguinte texto;
JANEIRO/2011 com o numero de Id (Controle) 0001
na sql abaixo como faço a pequisa se igual a JANEIRO/2011 eu somo + 1, se diferente, ou seja, FEVEREIRO/2011 eu começo de 0001? Nõ sei se fui claro!
Private Sub GeraID()
[ô]Gerando codigos sequenciais de acordo com o ultimo reg
Set RstID = New ADODB.Recordset
If RstID.State = 1 Then _
RstID.Close
RstID.Open [Ô]SELECT DISTINCT MAX(Controle) AS Controle FROM Dados[Ô], _
ConexaoCartao, adOpenForwardOnly, adLockReadOnly
With RstID
If .EOF = True And .BOF = True Then
N_ID = [Ô]1[Ô]
Else
.MoveLast
N_ID = Val(.Fields([Ô]Controle[Ô])) + 1
End If
Txt_ID.Text = Format(N_ID, [Ô]0000[Ô])
End With
RstID.Close
Set RstID = Nothing
End Sub
Veja bem, na hora que gero o codigo tenho que verificar o texto campo (MES) no caso JANEIRO/2011 existe na tabela com o ID de 0001 ai somo + 1, ficaria:
JANEIRO/2011 ID 0001
JANEIRO/2011 ID 0002.......... e assim por diante
agora na hora da pesquisa eu verificar que o texto FEVEREIRO/2011 não existe então eu gravo:
FEVEREIRO/2011 ID 0001
JANEIRO/2011 ID 0001
JANEIRO/2011 ID 0002.......... e assim por diante
agora na hora da pesquisa eu verificar que o texto FEVEREIRO/2011 não existe então eu gravo:
FEVEREIRO/2011 ID 0001
ñ entendi muito bem...mas se tu quer fazer automatico a numeração do ID
tu pode faze usando o recordcount
depois de conectado faz iso
if tabela.recordcount<1 then
variavel =1
else
variavel = val(tabela!CAMPO) + 1
endif
ñ é isso???
ñ entedi muito bem o q tu quiz dizer..
tu pode faze usando o recordcount
depois de conectado faz iso
if tabela.recordcount<1 then
variavel =1
else
variavel = val(tabela!CAMPO) + 1
endif
ñ é isso???
ñ entedi muito bem o q tu quiz dizer..
tenta isto, tire o movelast de seu código
pois query ja pega o ultimo ID, e também tirei o distinct
veja se funciona
pois query ja pega o ultimo ID, e também tirei o distinct
If RstID.State = 1 Then RstID.Close
RstID.Open [Ô]SELECT MAX(Controle) AS Controle FROM Dados[Ô], _
ConexaoCartao, adOpenForwardOnly, adLockReadOnly
With RstID
If .EOF = True And .BOF = True Then
N_ID = [Ô]1[Ô]
Else
N_ID = Val(.Fields([Ô]Controle[Ô])) + 1
End If
Txt_ID.Text = Format(N_ID, [Ô]0000[Ô])
End With
RstID.Close
Set RstID = Nothing
veja se funciona
Vamo lá, no campo (Mes) tenho gravado:
Campo Mes Campo Controle
JANEIRO/2011 0001
JANEIRO/2011 0002
JANEIRO/2011 0003
JANEIRO/2011 0004
JANEIRO/2011 0005
aqui eu gero o proximo em uma rotina normal:
RstID.Open [Ô]SELECT DISTINCT MAX(Controle) AS Controle FROM Dados[Ô],
Preciso que antes de gerar o codigo vejo a condição, se o campo Mes é igual JANEIRO/2011 então somo mais 1 no campo Controle, ficaria 0006, agora se o texto q estou gravando seja outro, ou seja, FEVEREIRO/2011 então comeco com 0001, Seria o paramentro para gerar o ID, como adaptar isso na query?
Campo Mes Campo Controle
JANEIRO/2011 0001
JANEIRO/2011 0002
JANEIRO/2011 0003
JANEIRO/2011 0004
JANEIRO/2011 0005
aqui eu gero o proximo em uma rotina normal:
RstID.Open [Ô]SELECT DISTINCT MAX(Controle) AS Controle FROM Dados[Ô],
Preciso que antes de gerar o codigo vejo a condição, se o campo Mes é igual JANEIRO/2011 então somo mais 1 no campo Controle, ficaria 0006, agora se o texto q estou gravando seja outro, ou seja, FEVEREIRO/2011 então comeco com 0001, Seria o paramentro para gerar o ID, como adaptar isso na query?
se o banco for sqlserver
faça assim
mes_referencia | ano_referencia | controle | outros campos ....
Faça uma PK composta usando os 3 campos
e faça o insert via procedure...
na procedure:
create procedure set_cadastro(p_Mes int, p_ano int, pOutrosCampos) [Ô]não lembro se é assimm mesmo que cria a proc[Ô]
as
declare vControle int
select max(controle) + 1 into vControle from tabela where mes_referencia = p_mes and ano_referencia = p_ano
depois da o insert
faça assim
mes_referencia | ano_referencia | controle | outros campos ....
Faça uma PK composta usando os 3 campos
e faça o insert via procedure...
na procedure:
create procedure set_cadastro(p_Mes int, p_ano int, pOutrosCampos) [Ô]não lembro se é assimm mesmo que cria a proc[Ô]
as
declare vControle int
select max(controle) + 1 into vControle from tabela where mes_referencia = p_mes and ano_referencia = p_ano
depois da o insert
O banco é Access.
seria assim
RstID.Open [Ô]SELECT MAX(Controle) AS Controle FROM Dados WHERE mes = [ô][Ô] & txtmesano.Text & [Ô][ô][Ô]
RstID.Open [Ô]SELECT MAX(Controle) AS Controle FROM Dados WHERE mes = [ô][Ô] & txtmesano.Text & [Ô][ô][Ô]
Bom, coloquei o banco mudando um puco a logica.
Ao abrir vão verificar 03 campos, os 02 pra uso são:
Campo (Mes) e Campo (Controle). Como podem ver o campo(Mes) esta com o texto OUTUBRO/2008 e todos com o numero de controle 0001. Suponhamos uma variavel string onde vou quardar o nome do mes e usar como parametro de pesquisa, pois bem, antes de gerar o codigo verifico se o testo da variavel é igual ao do campo (Mes), se sim o controle continua sendo 0001 se não gero o controle 0002, então va ficar:
OUTUBRO/2008 0001
SETEMBRO/2008 0002
Ao abrir vão verificar 03 campos, os 02 pra uso são:
Campo (Mes) e Campo (Controle). Como podem ver o campo(Mes) esta com o texto OUTUBRO/2008 e todos com o numero de controle 0001. Suponhamos uma variavel string onde vou quardar o nome do mes e usar como parametro de pesquisa, pois bem, antes de gerar o codigo verifico se o testo da variavel é igual ao do campo (Mes), se sim o controle continua sendo 0001 se não gero o controle 0002, então va ficar:
OUTUBRO/2008 0001
SETEMBRO/2008 0002
Tópico encerrado , respostas não são mais permitidas