ADICIONAR NUMEROS EM SEQUENCIA COM CONDICAO.

BRUNODOPREDIO 03/05/2011 09:12:56
#373036
Olá pessoal.

Tenho duas tabelas, Lote e CLiente.

Preciso inserir o numero de lote Automaticamente e em sequência, mas é o seguinte, se o cliente for do tipo cliente ele add o lote com inicio 100 se o cliente for do tipo fornecedor eu add o lote com inicio 500, como posso fazer para ele sempre incrementar mais um quando eu inserir um novo lote com esta condição.

eu tava fazendo assim mas com o .max ele sempre pega o 500 como max e não adiciona no lote 100


If testacli = [Ô]Fornecedor[Ô] Then

[txt-color=#e80000] Dim strNumLoteForn = (From l In Ent.Entities.LOTE Select l.NumeroLote).Max + 1[/txt-color][txt-color=#0000f0] (###AQUI TAH O PROBLEMA###)
[/txt-color]


Dim lote As New LOTE With {.Largura = strLargura, _
.PesoLiquido = strPeso, _
.CodExterno = strCodExt, _
.Condicao = strCondicao, _
.Inspecao = strUsrLogado, _
.NumeroLote = strNumLoteForn, _
.LocalEstoque = [Ô]CNS[Ô], _
.IdLinha = i, _
.Status = [Ô]RECEBIMENTO[Ô]}

lote.NOTAFISCAL_PRODUTO = (From l In Ent.Entities.NOTAFISCAL_PRODUTO Where l.IdNF = txtNumDoc.Text _
And l.IdNFProduto = stridNfProd Select l).First()

Ent.Entities.AddToLOTE(lote)
Ent.Entities.SaveChanges()

Else
[txt-color=#e80000] Dim strNumLoteCli = (From l In Ent.Entities.LOTE Select l.NumeroLote).Max + 1 [txt-color=#0000f0](###AQUI TAH O PROBLEMA###)[/txt-color]
[/txt-color]


Dim lote As New LOTE With {.Largura = strLargura, _
.PesoLiquido = strPeso, _
.CodExterno = strCodExt, _
.Condicao = strCondicao, _
.Inspecao = strUsrLogado, _
.NumeroLote = strNumLoteCli, _
.LocalEstoque = [Ô]CNS[Ô], _
.IdLinha = i, _
.Status = [Ô]RECEBIMENTO[Ô]}

lote.NOTAFISCAL_PRODUTO = (From l In Ent.Entities.NOTAFISCAL_PRODUTO Where l.IdNF = txtNumDoc.Text _
And l.IdNFProduto = stridNfProd Select l).First()

Ent.Entities.AddToLOTE(lote)
Ent.Entities.SaveChanges()


End If




COMO POSSO FAZER PARA RESOLVER ESTOU SEM IDÈIAS
LUIZCOMINO 03/05/2011 09:18:58
#373037
amigo e quando o cliente chegar ao lote 499? o próximo será 500 só que já existira esse lote cadastro para o fornecedor e ai oq acontece?, eu acho melhor você criar mais um campo chamado tipo na tabela e fazer o lete sequencial.
ex:

LOTE TIPO
0001 C
0002 C
0003 F
0004 C

entendeu?
abraço!
KIKO.WIZZ 03/05/2011 09:21:15
#373038
Use isto no seu Select:
[Ô][txt-color=#0000f0] WHERE Left(NumeroLote,3) = 500[/txt-color] [Ô] Para fornecedor

e

[txt-color=#0000f0]WHERE Left(NumeroLote,3) = 100[/txt-color] PAra Cliente
BRUNODOPREDIO 03/05/2011 09:23:07
#373039
Então na verdade não ehhh 100 e 500 é 1000000 e 5000000.

Sua idéia é boa mas o pessoal aqui quer desse jeito aiiii que eu to falando!!!

Complicadoo!!!!rssrsrr
LUIZCOMINO 03/05/2011 09:31:54
#373043
cara mas mesmo assim acho mais fácil vc tmb criar esse campo tipo, ficaria assim da maneira que você quer


[Ô]Select codigolote from tb_lote where tipo=[ô]C[ô] order by codigo desc[Ô]

essa select ira pegar o ultimo código do lote de clientes, claro o primeiro você tera que gravar como 1000, e a mesma coisa , para fornecedor você tera que gravar o primeiro como 5000, ai basta usar essa select para filtrar o que é fornecedor e clinte e tmb gravar na sequencia desejada.
BRUNODOPREDIO 03/05/2011 09:32:41
#373044
Citação:

:
Use isto no seu Select:
[Ô][txt-color=#0000f0] WHERE Left(NumeroLote,3) = 500[/txt-color] [Ô] Para fornecedor

e

[txt-color=#0000f0]WHERE Left(NumeroLote,3) = 100[/txt-color] PAra Cliente



kiko wizz

Não entendi mto bem essa questão do left ele vai tranformar soh os 3 primeiros numeros e add na sequencia dos ultimos?????
KIKO.WIZZ 03/05/2011 09:38:23
#373045
Tende adicionar isso na SQL

if testacli = [Ô]Fornecedor[Ô] Then
WHERE NumeroLote >5000000

Else
WHERE NumeroLote < 5000000

End If


Que banco de Dados vc está usando?
BRUNODOPREDIO 03/05/2011 10:07:24
#373058
Citação:

:
Tende adicionar isso na SQL

if testacli = [Ô]Fornecedor[Ô] Then
WHERE NumeroLote >5000000

Else
WHERE NumeroLote < 5000000

End If


Que banco de Dados vc está usando?




vo tenta usar o likeee aquiii pra ver c funciona......
BRUNODOPREDIO 03/05/2011 10:15:25
#373060
O PRoblema é que aqui a gente usa o entity framework e neste caso o like não funciona nem o starswith
BRUNODOPREDIO 03/05/2011 10:23:33
#373065
queria colocar assim


If testacli = [Ô]Fornecedor[Ô] Then

strNumLote = (From l In Ent.Entities.LOTE Where l.NumeroLote [txt-size=1[txt-color=#e80000]]Like [Ô]1%[Ô] [/txt-color][/txt-size]Select l.NumeroLote).Max + 1
Else
strNumLote = (From l In Ent.Entities.LOTE Where l.NumeroLote[txt-color=#e80000] Like [Ô]5%[/txt-color][Ô] Select l.NumeroLote).Max + 1
End If[txt-size=1] [/txt-size]

mas ele não aceita like nem starswith
KIKO.WIZZ 03/05/2011 14:32:41
#373093
Outra opção:
[txt-color=#0000f0]
If testacli = [Ô]Fornecedor[Ô] Then

strNumLote = (From l In Ent.Entities.LOTE Where l.NumeroLote [txt-size=1] WHERE Left(NumeroLote,1)=1 Select l.NumeroLote).Max + 1
Else
strNumLote = (From l In Ent.Entities.LOTE Where l.NumeroLote WHERE Left(NumeroLote,1)=5 Select l.NumeroLote).Max + 1
End If[/txt-color]


Que banco de daos é esse que vc está usando?
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas