6 Replies Latest reply: Jun 27, 2017 1:27 PM by Marcel Vinicius de Oliveira RSS

    Execute SQL

    Marcel Vinicius de Oliveira

      Boa tarde pessoal,

       

      Tenho a seguinte duvida: estou fazendo acesso ao banco de dados de um cliente, porém não sei a estrutura de tabelas do ERP usado.

      O fornecedor do ERP criou umas procedures para consumirmos somente os dados que queremos.

      Exemplo:

      EXECUTE itensEstoque

      SELECT * FROM ##itensEstoque.

      Gostaria de saber se tem alguma forma de criar uma carga que passe esse comando e o mesmo retornar os dados para um QVD.

      Como fazer para acessar somente os dados do retorno da procedure?

      No QVD, consigo adicionar dados novos e não excluir os antigos?

       

      Grato pelo auxilio quem souber.

       

      Atenciosamente.

        • Re: Execute SQL
          Felip Drechsler

          Bom dia Marcel,

           

          É possível realizando um load precedente

          Algo nesses moldes:

           

          Tabela:

          Load

               *;

          SQL EXECUTE itensEstoque;

           

          Para a inclusão dos novos itens, você teria que carregar o QVD antigo e realizar alguma forma de verificação para identificar quais são os valores antigos e quais os novos que estão sendo carregados pela procedure (por data ou id por exemplo).

           

          // Supondo que há um ID

          NoConcatenate

          QVD:

          Load

               *

          From QVD;

           

          Load

           

          // Segundo load para carregar os dados

          Load

               *

          Resident Tabela

          where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').

           

          Felipe.

            • Re: Execute SQL
              Marcel Vinicius de Oliveira

              Muito obrigado pela ajuda Felipe.

               

              Outra pergunta, dessa forma eu também posso criar um novo QVD?

               

              Passo um caminho de pasta local, para armazenar esse QVD? Como posso fazer?

               

              Grato mais uma vez pelo auxilio.

                • Re: Execute SQL
                  Felip Drechsler

                  Oi Marcel,

                   

                  Você pode criar um novo QVD ou sobrescrever o antigo que você tinha.

                   

                  Tabela:

                  Load

                       *;

                  SQL EXECUTE itensEstoque;

                   

                  // Supondo que há um ID

                  NoConcatenate

                  QVD:

                  Load

                       *

                  From QVD;

                   

                  // Segundo load para carregar os dados

                  Concatenate (QVD)

                  Load

                       *

                  Resident Tabela

                  where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').

                   

                  Store QVD into [QVD.qvd] (qvd); //local onde estaria o arquivo.

                   

                  Seria algo mais ou menos nessa linha Pedro.

                   

                  Poderia marcar a resposta como correta / ou se te ajudou por favor?

                   

                  Felipe.

                    • Re: Execute SQL
                      Marcel Vinicius de Oliveira

                      Bom dia Felipe,

                       

                      Muito obrigado pela ajuda, estou começando a caminhar melhor.

                       

                      Tenho a seguinte duvida: não tenho nenhum QVD montado ainda.

                      Preciso consultar uma procedure em outro servidor por conexão e montei a seguinte sintaxe:

                      LIB CONNECT TO '192.168.0.251'

                      Load

                           *;

                      SQL EXECUTE dbo.wGetItem;

                       

                      Store itens into [lib:/Itens/itens.qvd];

                       

                      Ao carregar os dados, da a seguinte msg:

                      Carga de arquivos iniciada

                       

                      Os dados não foram carregados. Solucione o erro e tente carregar novamente.

                      Mas não apresenta erro algum, onde será que estou errando? Preciso montar um QVD com os campos que retornam do execute ou ele gera automaticamente?

                        • Re: Execute SQL
                          Felip Drechsler

                          Oi Marcel,

                           

                          As mensagens que ele mostra realmente são meio inconsistentes com o erro que deveria dar.

                          Tenta rodar várias vezes pra ver se muda a mensagem (não sei porque, mas as vezes não mostra uma mensagem explicativa, algumas sim).

                           

                          Eu estou chutando, mas teria que entender se por exemplo, a conexão está ok, podendo ser também a procedure que é usada está certa.

                            • Re: Execute SQL
                              Marcel Vinicius de Oliveira

                              Boa tarde Felipe,

                               

                              Obrigado pela ajuda, consegui fazer a leitura direto criando uma tabela.

                              Porém agora estou querendo passar para um QVD e esta me dando erro:

                              ErrorSource: Microsoft OLE DB Provider for SQL Server,

                              ErrorMsg: Incorrect syntax near 'Store'.

                               

                              Store Itens into [lib://itens (stoant_danilo)/itens.qvd] (qvd)

                               

                              Preciso criar na mão um arquivo "itens.qvd"? Pois esse arquivo não existe (estou tentando criar do zero).

                              O que posso estar fazendo de errado?