NIK Postado Setembro 26, 2012 Denunciar Share Postado Setembro 26, 2012 (editado) Pessoal... Tenho o script abaixo que roda certinho, porém, ao salvar na tabela ele salva cada registro em uma linha... eu gostaria entender onde estou errado, pois parece simples e estou patinando.ValeuNIKEu queria que salvasse assim em uma linha só:1,C00466,015136,OS12/1725,null,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,%%Mas salva assim:1,C00466,NULL,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL1,NULL,015136,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL1,NULL,NULL,OS12/1725,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL1,NULL,NULL,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL1,NULL,NULL,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,%%----------------------------DECLARE @CODCOLIGADA INTDECLARE @CODCLIENTE VARCHAR(50)DECLARE @NUMEROMOV VARCHAR(50)DECLARE @LOTE VARCHAR(50)DECLARE @PRODUTO VARCHAR(50)DECLARE @DATA VARCHAR(50)DECLARE @DATA1 DATETIME DECLARE @ID INTSET @CODCOLIGADA = 1SET @DATA = CONVERT(VARCHAR,GETDATE(),102)+' '+CONVERT(VARCHAR(05),GETDATE(),108)SET @DATA1 = CONVERT(VARCHAR,GETDATE(),102) IF (SELECT COUNT(1) FROM INSERTED WHERE IDRELATORIO IN (140)) > 0BEGINSELECT @ID=IDRELATORIO FROM INSERTEDSELECT @CODCLIENTE=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 61SELECT @NUMEROMOV=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 62SELECT @LOTE=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 94SELECT @PRODUTO=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 105ENDBEGININSERT INTO TABELA VALUES (@CODCOLIGADA, @CODCLIENTE,@NUMEROMOV,@LOTE,@DATA,@DATA1,@ID,@PRODUTO)END Editado Setembro 26, 2012 por NIK Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Setembro 27, 2012 Denunciar Share Postado Setembro 27, 2012 Bom dia NIK, Para salvar da forma que quer, você terá que concatenar os valores, dando o insert em apenas 1 coluna. Quando faz:INSERT INTO TABELA VALUES (@CODCOLIGADA, @CODCLIENTE,@NUMEROMOV,@LOTE,@DATA,@DATA1,@ID,@PRODUTO) O sql entende que a separação das variáveis por vírgula, é a inserção do dado em cada coluna da tabela. Para ficar tudo em uma linha: a tabela "TABELA" deve conter apenas 1 coluna. Os dados serão concatenados e inseridos nesta coluna: INSERT INTO TABELA (Coluna) VALUES (@CODCOLIGADA + ',' + @CODCLIENTE + ....) Se alguma variável for do tipo INT, o sinal + tentará somar e não concatenar. Desta forma, terá que fazer a conversão do dado: INSERT INTO TABELA (Coluna) VALUES (cast(@CODCOLIGADA AS VARCHAR())+ ',' + @CODCLIENTE + ....)) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 NIK Postado Setembro 28, 2012 Autor Denunciar Share Postado Setembro 28, 2012 Fulvio... Mais uma vez obrigado pelo suporte.AttNIK Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
NIK
Pessoal...
Tenho o script abaixo que roda certinho, porém, ao salvar na tabela ele salva cada registro em uma linha... eu gostaria entender onde estou errado, pois parece simples e estou patinando.
Valeu
NIK
Eu queria que salvasse assim em uma linha só:
1,C00466,015136,OS12/1725,null,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,%%
Mas salva assim:
1,C00466,NULL,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL
1,NULL,015136,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL
1,NULL,NULL,OS12/1725,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL
1,NULL,NULL,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,NULL
1,NULL,NULL,NULL,2012-09-26 15:31:00.000,2012-09-26 00:00:00.000,140,%%
----------------------------
DECLARE @CODCOLIGADA INT
DECLARE @CODCLIENTE VARCHAR(50)
DECLARE @NUMEROMOV VARCHAR(50)
DECLARE @LOTE VARCHAR(50)
DECLARE @PRODUTO VARCHAR(50)
DECLARE @DATA VARCHAR(50)
DECLARE @DATA1 DATETIME
DECLARE @ID INT
SET @CODCOLIGADA = 1
SET @DATA = CONVERT(VARCHAR,GETDATE(),102)+' '+CONVERT(VARCHAR(05),GETDATE(),108)
SET @DATA1 = CONVERT(VARCHAR,GETDATE(),102)
IF (SELECT COUNT(1) FROM INSERTED WHERE IDRELATORIO IN (140)) > 0
BEGIN
SELECT @ID=IDRELATORIO FROM INSERTED
SELECT @CODCLIENTE=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 61
SELECT @NUMEROMOV=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 62
SELECT @LOTE=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 94
SELECT @PRODUTO=SUBSTRING (DESCCAMPO,16,50) FROM INSERTED WHERE ORDEMCAMPO = 105
END
BEGIN
INSERT INTO TABELA VALUES (@CODCOLIGADA, @CODCLIENTE,@NUMEROMOV,@LOTE,@DATA,@DATA1,@ID,@PRODUTO)
END
Editado por NIKLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.