Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivo gerado no SQL server 2000 - não adiciona novos registros


victor daniel1281

Pergunta

Boa tarde

Estou usando o código abaixo para criar um arquivo com os dados dos colaboradores da minha empresa.

Toda vez que um funcionário novo é cadastrado, ele é adicionado neste arquivo. Estava funcionando bem até a o registro 1578 e a partir dai, não adicionou mais nenhum novo funcionário.

Aqui na empresa usamos o SQL Server 2000 SP2

Alguém tem idéia do que possa ser? já verifiquei tudo, inclusive se faço o select da procedure, ela traz todos os funcionários!

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

CREATE PROCEDURE sp_Arquivo_Seguranca AS

DECLARE @vchrFile VARCHAR(1000) ,

@vchrFileID INT ,

@FS INT ,

@RC INT ,

@DATA_PROC INT,

@NOME CHAR(60)

--Vai criar o arquivo no caminho do servidor SQLSERVER

--SET @vchrFile = '\\tmb931\bkpsql\TV1\SUNGEM01.DAT'

SET @vchrFile = '\\tmb849\d$\Arquivo_humanus\COLABORADORES.DAT'

EXEC @RC = sp_OACreate 'Scripting.FileSystemObject', @FS OUT

SET @RC = 0

IF @RC <> 0

BEGIN

PRINT 'Error: Criando o arquivo - @RC = ' + CAST(@RC AS VARCHAR)

END

-- Abrindo o arquivo especificado por @vchrFile

EXEC @RC = sp_OAMethod @FS , 'OpenTextFile' , @vchrFileID OUT , @vchrFile , 2 , 1

IF @RC <> 0

BEGIN

PRINT 'Error: Abrindo o arquivo especifico @RC = ' + CAST(@RC AS VARCHAR)

END

-- =============================================

-- Alterado de F.MTENROMATREXTERNO

DECLARE curLines CURSOR KEYSET FOR

SELECT (CAST (F.MTENROMATREXTERNO AS CHAR(6)) +';'+

CAST (C.pesNomeExtenso AS CHAR(54)) +';'+

CAST (D.pfuCodLotacao AS CHAR(10)) +';'+

CAST (E.lotDenominacao AS CHAR(70)) +';'+

CAST (T.FILENDCIDADE AS CHAR(25)) +';'+ --filNomeFilial, --Cidade Filial

CAST (T.FILTELEFONE AS CHAR(17)) +';'+ --filTelefone, --Telefone Filial

CAST (c.pesEmail AS CHAR(50)) +';'+

CAST (MTECODEMPRESA AS CHAR(3)) +';'+

CAST (I.PESNOMEEXTENSO AS CHAR(51)) +';'+

CAST (c.pesTipoPessoa AS CHAR(2)) +';'+

CAST (CONVERT(VARCHAR(10),pfuDtInicioContrato , 121) AS CHAR(10)) +';'+

CAST (denominacao AS CHAR(51)) +';'+

CAST (pfiDINumero AS CHAR(10)) +';'+

CAST (pfiCPFnumeroDigito AS CHAR(11)) +';'+

CAST (CONVERT(VARCHAR(10),pfiDataNascim , 121) AS CHAR(10)) +';'+

CAST (pfiNomeMae AS CHAR(51)) +';'+

CAST (mteUltSituacao AS CHAR(2)) +';'+

--CAST (ISNULL(C.PESTELCOMERCIAL,C.PESRAMAL) AS CHAR(20))+';'+

--CAST (C.PESTELCOMERCIAL AS CHAR(20))+';'+

CAST (c.pesRamal AS CHAR(4)) +';'+

CAST (S.CCUCODCENTROCUSTO AS CHAR(4))

) AS SAIDA

FROM PESSOA_FIS_FUNC A,

CES_CARGO B,

PESSOA_PESS C,

PESSOA_FUNC D,

LOTACAO E,

MATRICULA_EXTERNA F,

PESSOA_FISICA G ,

PESSOA_PESS I,

MAPA_CUSTO R ,

CENTRO_CUSTO S,

FILIAL T

WHERE --pffcodpessoa=6444 AND

A.PFFCODCARGO=B.CODCARGO

AND A.PFFCODPESSOA=C.PESCODPESSOA

AND A.PFFCODPESSOA=D.PFUCODPESSOA

AND E.LOTCODLOTACAO=D.PFUCODLOTACAO

AND C.PESCODPESSOA=F.MTECODPESSOA

AND D.PFUCODPESSOASUPERV=I.PESCODPESSOA

AND A.PFFCODPESSOA=G.PFICODPESSOA

AND D.PFUCODLOTACAO=R.MAPCODLOTACAO

AND R.MAPCODCENTROCUSTO=S.CCUCODCENTROCUSTO

AND F.MTECODEMPRESA =T.FILCODEMPRESA

AND F.MTENROFILIAL=T.FILNROFILIAL

AND MTEULTSITUACAO <> '3'

AND C.PESTIPOPESSOA IN ('MM','DR','ES')

AND MTECODEMPRESA IN ('001','002')

DECLARE @vchrText VARCHAR(8000)

OPEN curLines

FETCH NEXT FROM curLines INTO @vchrText

WHILE (@@fetch_status = 0) AND (@RC = 0)

BEGIN

-- Dá um Append no arquivo, incluindo as linhas

EXEC @RC = sp_OAMethod @vchrFileID, 'WriteLine', Null , @vchrText

-- Erro ao popular arquivo

IF @RC <> 0

BEGIN

PRINT 'Error: Writing string data to file - @RC = ' + CAST(@RC AS VARCHAR)

END

FETCH NEXT FROM curLines INTO @vchrText

-- PRINT 'SAIDA => ' + @vchrTexT

END

CLOSE curLines

DEALLOCATE curLines

EXECUTE @RC = sp_OAMethod @vchrFileID, 'close', Null //Chama um método de um objeto OLE

EXECUTE @RC = sp_OADestroy @vchrFileID //desalocar a instância do objeto criado

EXECUTE @RC = sp_OADestroy @FS

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia Victor,

você vai inserindo os dados em um arquivo DAT, ok? Como você disse, as informações vão sendo inseridas normalemente até o registro 1578. Depois não insere mais nada...

O problema pode estar no arquivo DAT, e não na estrutura do SQL. Faça os testes e pesquise na net sobre a extensão DAT.

Uma dica: altere o script de inserção para gravar menos dados no arquivo. Ao invés de colocar nome, tel, DataNasc, Nome Mae; coloque apenas 2 campos e mande gravar no arquivo DAT. Se não inserir mais de 1578 registros, pode estar relacionado com a quantidade de linhas, e não o volume de dados.

Faça os testes... :.)

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...