ADICIONAR NUMEROS EM SEQUENCIA COM CONDICAO.
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
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
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!
ex:
LOTE TIPO
0001 C
0002 C
0003 F
0004 C
entendeu?
abraç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
[Ô][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
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
Sua idéia é boa mas o pessoal aqui quer desse jeito aiiii que eu to falando!!!
Complicadoo!!!!rssrsrr
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.
[Ô]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.
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?????
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?
if testacli = [Ô]Fornecedor[Ô] Then
WHERE NumeroLote >5000000
Else
WHERE NumeroLote < 5000000
End If
Que banco de Dados vc está usando?
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......
O PRoblema é que aqui a gente usa o entity framework e neste caso o like não funciona nem o starswith
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
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
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?
[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?
Tópico encerrado , respostas não são mais permitidas