NIK Posted September 26, 2012 Report Share Posted September 26, 2012 (edited) 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 Edited September 26, 2012 by NIK Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted September 27, 2012 Report Share Posted September 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 + ....)) Quote Link to comment Share on other sites More sharing options...
0 NIK Posted September 28, 2012 Author Report Share Posted September 28, 2012 Fulvio... Mais uma vez obrigado pelo suporte.AttNIK Quote Link to comment Share on other sites More sharing options...
Question
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
Edited by NIKLink to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.