Array
(
)

Como encontrar o Último Registro Gravado na Tabela

Garibaldo Chaves
   - 10 abr 2014

Bom dia Pessoal.
Estou com esse problema e não estou conseguindo resolver.
Tenho uma tabela de Romaneio e dentro dessa tabela vários campos de controles. Dentro dessa Tabela preciso encontrar o último Romaneio gravado seguindo a sequência de 2 Campos, ou seja. Na Tabela Consta várias Filiais. Quero encontrar o último romaneio gravado, tendo como base o Número da Filial e o Número de Série, nessa sequência.
Ex: Filial: 001 Série: 001 Romaneio: 001
Filial: 001 Série: 001 Romaneio: 002
Filial: 001 Série: 001 Romaneio: 003 Nesse caso Como eu faço para encontrar o romaneio 4?
essa é a minha procedure
CREATE PROCEDURE ROMANEIOS_ULTIMOGRAVADO(
@Serie_Romaneio NCHAR(3),
@Numero_Romaneio INT,
@Filial_Origem INT
)
AS
BEGIN
SELECT MAX (Filial_Origem) MAX (Serie_Romaneio) FROM tbRomaneios WHERE Filial_Origem = @Filial_Origem AND Serie_Romaneio = @Serie_Romaneio
END
GO
Garibaldo

Jair A.n.
   - 10 abr 2014

Bom Dia, esse manifesto de carga, (romaneio) você não grava a data que foi dado a manutenção (inclusão, alteração) porquê a sua consulta pegando o máximo da filial de origem e o máximo da serie não vai dar certo, pode esquecer. O "romaneio" tem que ser o máximo você já selecionou e filtrou por filial e serie pegue apenas o "MAX(romaneio) AS ultimo_emitido"
Ok

Garibaldo Chaves
   - 10 abr 2014

Jair, Bom dia.

Cada Filial pode ter a sua sequência de Romaneios. Se eu pegar o último emitido, então o sistema terá uma sequência única para todas a s filiais.

Jair A.n.
   - 10 abr 2014


Citação:
]

Bem, seguinte: "eu não entendi porquê você está passando no parâmetro o "numero do romaneio" sendo que, esse é o que você quer (o último)!

Sua procedure (PROCEDURE ROMANEIOS_ULTIMOGRAVADO)
Begin
SELECT MAX(romaneio) AS ult_romaneio FROM tbRomaneios WHERE (Filial_Origem = @Filial_Origem) AND (Serie_Romaneio = @Serie_Romaneio);
End;

Capiti!

Garibaldo Chaves
   - 10 abr 2014

Jair realmente eu não preciso passar o número do romaneio, porém, eu não entendi a regra que você passou ou eu não me expressei corretamente.

Quanto ao número do Romaneio, você tem razão, eu realmente não preciso está passando.

Dentro da mesma tabela eu posso ter várias filiais EX: 001, 002, 003. Cada filial terá a sua numeração própria:

Ex: Filial: 001 Série: 001 Romaneio: 001 Filial: 002 Série: 001 Romaneio: 001 Filial: 003 Série: 001 Romaneio: 001
Filial: 001 Série: 001 Romaneio: 002 Filial: 002 Série: 001 Romaneio: 002 Filial: 003 Série: 001 Romaneio: 002
Filial: 001 Série: 001 Romaneio: 003 Filial: 002 Série: 001 Romaneio: 003 Filial: 003 Série: 001 Romaneio: 003

Eu vou passar via parâmetro o Número da Filial e a série do Romaneio.

Garibaldo

Jair A.n.
   - 10 abr 2014

Boa Tarde esqueci realmente, você deverá informar a "filial de origem e a de destino" para pegar o romaneio correto...
então:
SELECT MAX(romaneio) AS ult_romaneio FROM tbRomaneios WHERE (Filial_Origem = @Filial_Origem) AND (Filial_Destino = @Filial_destino) AND (Serie_Romaneio = @Serie_Romaneio);

Citação:
Jair realmente eu não preciso passar o número do romaneio, porém, eu não entendi a regra que você passou ou eu não me expressei corretamente.

Quanto ao número do Romaneio, você tem razão, eu realmente não preciso está passando.

Dentro da mesma tabela eu posso ter várias filiais EX: 001, 002, 003. Cada filial terá a sua numeração própria:

Ex: Filial: 001 Série: 001 Romaneio: 001 Filial: 002 Série: 001 Romaneio: 001 Filial: 003 Série: 001 Romaneio: 001
Filial: 001 Série: 001 Romaneio: 002 Filial: 002 Série: 001 Romaneio: 002 Filial: 003 Série: 001 Romaneio: 002
Filial: 001 Série: 001 Romaneio: 003 Filial: 002 Série: 001 Romaneio: 003 Filial: 003 Série: 001 Romaneio: 003

Eu vou passar via parâmetro o Número da Filial e a série do Romaneio.

Garibaldo