- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Insert no Banco como fazer ???
×
Linguagem de Programação ADVPL
Perguntas Insert no Banco como fazer ???
- mbrigagao
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
11 anos 6 meses atrás #14247
por mbrigagao
Insert no Banco como fazer ??? foi criado por mbrigagao
Bom dia pessoal,
Não conheço muito de SQL por isso peço a ajuda de vocês.
Preciso copiar os dados da tabela SG1 para a SGG, pra isso estou pensando em montar uma query para fazer isso, mas não tenho a menor ideia de como fazer.
Alguém poderia me dar uma luz ?
Não conheço muito de SQL por isso peço a ajuda de vocês.
Preciso copiar os dados da tabela SG1 para a SGG, pra isso estou pensando em montar uma query para fazer isso, mas não tenho a menor ideia de como fazer.
Alguém poderia me dar uma luz ?
Por favor Acessar ou Registrar para participar da conversa.
- henry.charriere
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 492
- Obrigados Recebidos: 0
11 anos 6 meses atrás #14263
por henry.charriere
Respondido por henry.charriere no tópico Insert no Banco como fazer ???
Marcelo,
não sei se é a melhor solução, mas de forma rápida faria com um cursor...
ex;
DECLARE @Z03_DATA VARCHAR(, @Z03_RACAO VARCHAR(30), @Z03_BATIDA AS INT, @Z03_BATIDA_DIARIA AS INT, @Z03_PESO AS FLOAT, @R_E_C_N_O_ AS INT
DELETE FROM Z02010
DECLARE SOMAI_BATIDA CURSOR STATIC
FOR
SELECT CONVERT(VARCHAR, E3TIMESTAMP, 112), [Descricao], [Batida], [Batida_Diaria], [KG_Total] FROM FabricaRacao.dbo.Batidas
WHERE ISNULL(Automatico_Manual_Quality,192) <> 1 AND CONVERT(VARCHAR, E3TIMESTAMP, 112) BETWEEN @DATAI AND @DATAF
OPEN SOMAI_BATIDA
WHILE 1 = 1
BEGIN
FETCH NEXT FROM SOMAI_BATIDA
INTO @Z03_DATA, @Z03_RACAO, @Z03_BATIDA, @Z03_BATIDA_DIARIA, @Z03_PESO
IF @@FETCH_STATUS <> 0
BEGIN
CLOSE SOMAI_BATIDA
DEALLOCATE SOMAI_BATIDA
BREAK
END
SELECT @R_E_C_N_O_ = ISNULL((SELECT MAX(R_E_C_N_O_) FROM Z02010),0)
SET @R_E_C_N_O_ = @R_E_C_N_O_ + 1
PRINT @R_E_C_N_O_
INSERT INTO [Z02010]([Z02_RACAO],[Z02_DATA],[Z02_BATIDA],[Z02_BATDIA] ,[Z02_PESO] ,[Z02_ORDEM],[R_E_C_N_O_])
VALUES (@Z03_RACAO, @Z03_DATA ,@Z03_BATIDA ,@Z03_BATIDA_DIARIA,@Z03_PESO,@R_E_C_N_O_ ,@R_E_C_N_O_ )
END
SET @OUT_RETURN = 0
SET @MSG_RETURN = 'OK'
GO
não sei se é a melhor solução, mas de forma rápida faria com um cursor...
ex;
DECLARE @Z03_DATA VARCHAR(, @Z03_RACAO VARCHAR(30), @Z03_BATIDA AS INT, @Z03_BATIDA_DIARIA AS INT, @Z03_PESO AS FLOAT, @R_E_C_N_O_ AS INT
DELETE FROM Z02010
DECLARE SOMAI_BATIDA CURSOR STATIC
FOR
SELECT CONVERT(VARCHAR, E3TIMESTAMP, 112), [Descricao], [Batida], [Batida_Diaria], [KG_Total] FROM FabricaRacao.dbo.Batidas
WHERE ISNULL(Automatico_Manual_Quality,192) <> 1 AND CONVERT(VARCHAR, E3TIMESTAMP, 112) BETWEEN @DATAI AND @DATAF
OPEN SOMAI_BATIDA
WHILE 1 = 1
BEGIN
FETCH NEXT FROM SOMAI_BATIDA
INTO @Z03_DATA, @Z03_RACAO, @Z03_BATIDA, @Z03_BATIDA_DIARIA, @Z03_PESO
IF @@FETCH_STATUS <> 0
BEGIN
CLOSE SOMAI_BATIDA
DEALLOCATE SOMAI_BATIDA
BREAK
END
SELECT @R_E_C_N_O_ = ISNULL((SELECT MAX(R_E_C_N_O_) FROM Z02010),0)
SET @R_E_C_N_O_ = @R_E_C_N_O_ + 1
PRINT @R_E_C_N_O_
INSERT INTO [Z02010]([Z02_RACAO],[Z02_DATA],[Z02_BATIDA],[Z02_BATDIA] ,[Z02_PESO] ,[Z02_ORDEM],[R_E_C_N_O_])
VALUES (@Z03_RACAO, @Z03_DATA ,@Z03_BATIDA ,@Z03_BATIDA_DIARIA,@Z03_PESO,@R_E_C_N_O_ ,@R_E_C_N_O_ )
END
SET @OUT_RETURN = 0
SET @MSG_RETURN = 'OK'
GO
Por favor Acessar ou Registrar para participar da conversa.
- limafalcao
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 24
- Obrigados Recebidos: 0
11 anos 6 meses atrás #14264
por limafalcao
Respondido por limafalcao no tópico Insert no Banco como fazer ???
Se o Protheus tiver funcionando, use o APSDU, Pode copiar os dados gerando um DBF e depois um Append pra tabela nova
Por favor Acessar ou Registrar para participar da conversa.
- mbrigagao
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
11 anos 6 meses atrás #14265
por mbrigagao
Respondido por mbrigagao no tópico Insert no Banco como fazer ???
José Fernando,
Não é possivel fazer via SDU, pois os nomes dos campos são diferentes, por exemplo:
G1_COD e GG_COD , ambos se referem ao codigo do produto;
Valeu
Não é possivel fazer via SDU, pois os nomes dos campos são diferentes, por exemplo:
G1_COD e GG_COD , ambos se referem ao codigo do produto;
Valeu
Por favor Acessar ou Registrar para participar da conversa.
- mbrigagao
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
11 anos 6 meses atrás #14266
por mbrigagao
Respondido por mbrigagao no tópico Insert no Banco como fazer ???
Henry,
Obrigado pela informação... mas infelizmente não entendi nada ... rsrsrs
Como falei anteriormente não tenho muito conhecimento no SQL.
Obrigado pela informação... mas infelizmente não entendi nada ... rsrsrs
Como falei anteriormente não tenho muito conhecimento no SQL.
Por favor Acessar ou Registrar para participar da conversa.
- henry.charriere
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 492
- Obrigados Recebidos: 0
11 anos 6 meses atrás #14268
por henry.charriere
Respondido por henry.charriere no tópico Insert no Banco como fazer ???
Brother, não tem segredo!
Vamos lá.
--Aqui vc vai declarar as varias da tabela sg1, igual tem no banco mesmo tipo e tal.....
DECLARE @Z03_DATA VARCHAR(08), @Z03_RACAO VARCHAR(30), @Z03_BATIDA AS INT, @Z03_BATIDA_DIARIA AS INT, @Z03_PESO AS FLOAT, @R_E_C_N_O_ AS INT
--Aqui estou declarando o cursos
DECLARE SOMAI_BATIDA CURSOR STATIC
FOR
--Aqui vc vai fazer o select na sg1 pegando os campos que vc quer...
SELECT CONVERT(VARCHAR, E3TIMESTAMP, 112), [Descricao], [Batida], [Batida_Diaria], [KG_Total] FROM FabricaRacao.dbo.Batidas
WHERE ISNULL(Automatico_Manual_Quality,192) <> 1 AND CONVERT(VARCHAR, E3TIMESTAMP, 112) BETWEEN @DATAI AND @DATAF
OPEN SOMAI_BATIDA
WHILE 1 = 1
BEGIN
FETCH NEXT FROM SOMAI_BATIDA
--aqui vc vai colocar os campos que vc declarou lá em cima, tem que conhecidir com os mesmo campos do select, mesma ordem
INTO @Z03_DATA, @Z03_RACAO, @Z03_BATIDA, @Z03_BATIDA_DIARIA, @Z03_PESO
IF @@FETCH_STATUS <> 0
BEGIN
CLOSE SOMAI_BATIDA
DEALLOCATE SOMAI_BATIDA
BREAK
END
--estamos fazendo isso para sempre incrementar o recno
SELECT @R_E_C_N_O_ = ISNULL((SELECT MAX(R_E_C_N_O_) FROM Z02010),0)
SET @R_E_C_N_O_ = @R_E_C_N_O_ + 1
--aqui vc vai colocar sua tabela sgg
--coloque os campos que vc vai inserir na mesma ordem do select exemplo
INSERT INTO [SGG]([CAMPO1],[CAMPOS2],[CAMPO3], R_E_C_N_O_ )
VALUES (@CAMPO1, @CAMPO2 ,@CAMPO3 @R_E_C_N_O_ )
--QUALQUER COISA GRIDA AI QUE A GENTE AJUDA
END
Vamos lá.
--Aqui vc vai declarar as varias da tabela sg1, igual tem no banco mesmo tipo e tal.....
DECLARE @Z03_DATA VARCHAR(08), @Z03_RACAO VARCHAR(30), @Z03_BATIDA AS INT, @Z03_BATIDA_DIARIA AS INT, @Z03_PESO AS FLOAT, @R_E_C_N_O_ AS INT
--Aqui estou declarando o cursos
DECLARE SOMAI_BATIDA CURSOR STATIC
FOR
--Aqui vc vai fazer o select na sg1 pegando os campos que vc quer...
SELECT CONVERT(VARCHAR, E3TIMESTAMP, 112), [Descricao], [Batida], [Batida_Diaria], [KG_Total] FROM FabricaRacao.dbo.Batidas
WHERE ISNULL(Automatico_Manual_Quality,192) <> 1 AND CONVERT(VARCHAR, E3TIMESTAMP, 112) BETWEEN @DATAI AND @DATAF
OPEN SOMAI_BATIDA
WHILE 1 = 1
BEGIN
FETCH NEXT FROM SOMAI_BATIDA
--aqui vc vai colocar os campos que vc declarou lá em cima, tem que conhecidir com os mesmo campos do select, mesma ordem
INTO @Z03_DATA, @Z03_RACAO, @Z03_BATIDA, @Z03_BATIDA_DIARIA, @Z03_PESO
IF @@FETCH_STATUS <> 0
BEGIN
CLOSE SOMAI_BATIDA
DEALLOCATE SOMAI_BATIDA
BREAK
END
--estamos fazendo isso para sempre incrementar o recno
SELECT @R_E_C_N_O_ = ISNULL((SELECT MAX(R_E_C_N_O_) FROM Z02010),0)
SET @R_E_C_N_O_ = @R_E_C_N_O_ + 1
--aqui vc vai colocar sua tabela sgg
--coloque os campos que vc vai inserir na mesma ordem do select exemplo
INSERT INTO [SGG]([CAMPO1],[CAMPOS2],[CAMPO3], R_E_C_N_O_ )
VALUES (@CAMPO1, @CAMPO2 ,@CAMPO3 @R_E_C_N_O_ )
--QUALQUER COISA GRIDA AI QUE A GENTE AJUDA
END
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Insert no Banco como fazer ???
Tempo para a criação da página:0.134 segundos