MANIPULA?ÃO DE DADOS EM EXCEL VIA SQL

BRUNOMARQUES14 11/11/2015 08:26:46
#453715
Citação:

:
Cara, eu sei exatamente o que você quer dizer com recursos hahahaha
Sempre programei, mas por força do destino acabei fazendo engenharia e fui parar numa multinacional pronto pra criar vários sistemas boladões para gerenciamento de dados.
Pensei [Ô]quando os caras verem o que eu faço, vou aplicar cálculo numérico ali pra otimização, fazer um sisteminha usando mínimos quadrados pra poder fazer previsão de demanda[Ô]. Tudo que sempre sonhei!

Quebrei a cara. Instalaram um Office 2003 (Sim, não digitei errado... e isso não tem nem 2 anos). E me mandaram fazer tudo com Excel hahaha
Briguei com a galera do TI pra deixarem eu instalar meu Visual Studio Express e eles não liberaram. Falaram que não podia liberar isso. A pergunta é: [Ô]Se é de graça, por que não posso instalar?[Ô]. Simplesmente cagaram pra mim.

Aí beleza. Contrataram uma empresa JAPONESA pra criarem um sistema de gestão de defeitos lá. Aí pensei [Ô]Poxa, o negócio deve ser do caralho[Ô]. Quando foi ver, o sistema não atendia e era apenas de Input. Ou seja, os operadores colocavam os dados lá... E depois pra poder fazer um relatório, só tinha um botão de [Ô]Exportar csv[Ô]. Tinha que exportar tudo para o Excel e montar tudo lá e montar os relatórios.

Numa reunião, reclamei disso. Que era trabalho a toa, que podíamos ter uma análise muito mais rápida e apurada. Pedi pro pessoal do TI liberar um usuário no SQL Server pra mim com permissão Somente Leitura. Pra poder fazer minhas queries de boa. Falaram que iria dar muito problema de segurança ¬¬ Que usuários Somente Consulta poderiam criar [Ô]Consultas hackers pra danificar o banco de dados e parar o sistema[Ô] (Desculpem galera do TI, mas tem muito nego incompetente na área de vocês).

Resumindo, a solução foi fazer umas gambiarras cruéis usando Excel como banco de dados, macros de importação e relatórios com VBA na veia. Quando automatizei tudo, meu contrato de estágio acabou e não me efetivaram hahaha Como me arrependo de ter feito isso...

Mas choros a parte... Vamos ao seu problema:



            Dim recSet As New ADODB.Recordset
Dim cmdCommand As New ADODB.Command


cmdCommand.ActiveConnection = cnBanco

[ô]atualizar revisão no banco
strSQLAtualizar = [Ô]UPDATE documentacao SET Revisao=[Ô] & rsUpdate!Revisão & [Ô] WHERE Identificador =[Ô] & rsUpdate!identificador & [Ô][Ô]

[ô]cn.Open
[ô]cn.Execute strSQLAtualizar
[ô]Set recSet = Db.OpenRecordset(strSQLAtualizar)
[ô]recSet.AddNew

cmdCommand.CommandText = strSQLAtualizar
cmdCommand.CommandType = adCmdText

Set recSet = cmdCommand.Execute



Se quer apenas atualizar seu banco de dados, faça só isso:


            

strSQLAtualizar = [Ô]UPDATE documentacao SET Revisao=[Ô] & rsUpdate!Revisão & [Ô] WHERE Identificador =[Ô] & rsUpdate!identificador & [Ô][Ô]
cnBanco.Execute strSQLAtualizar



Se você ainda quiser usar o SelectCommand, mude essa linha:

Set recSet = cmdCommand.Execute

Por esta:

cmdCommand.Execute


Se não me engano, o método Execute retorna a quantidade de linhas que foram afetadas pela sua Query.
Ao contrário do VB.NET, o VB6 tem o conceito de Atribuição de dados e Atribuição de Objetos. Tem essa diferença.

Quando você usa o Set, automaticamente está falando que está atribuindo um valor de um objeto. Só que sua função retorna um dado primitivo, e não um objeto. Que usando a nomenclatura do VB6, seria tratado como Let.

Mas como o pessoal falou, dá uma olhada no .NET também. O problema todo, é quando a empresa tem algumas burocracias imbecis que impedem o trabalhador diferenciado de mostrar seu talento (pra quem não entendeu, o trabalhador diferenciado sou eu hahahah)

Espero ter ajudado!



Bom dia!

Cara, o que acontece comigo é muito parecido com oq vc relatou acima, o pessoal da TI fica sempre me olhando torto quando percebem que eu estou programando aqui na empresa, mesmo usando o VBA do Office, jamais eles irão autorizar a instalação no Visual Studio na minha máquina, se eu for utilizar esse recurso vai ter que ser na minha máquina particular e depois terei que comprar um briga para fazer a instalação do programa.

Eu testei como vc me indicou acima, mas continua dando o mesmo erro. Estou anexando o arquivo, se vc puder dar uma olhada eu ficaria muito grato.
Como eu disse nas ultimas postagem, a aplicação está no arquivo do PowerPoint, mas ainda não está pronto. Entra no vba e executa o [Ô]FrmUpdateDocumentos[Ô], ele vai pedir as informações referentes a planilha [Ô]Listagem Doc_Lab 30.09.15[Ô], a intenção é que o sistema atualize os dados da tabela [Ô]documentacao[Ô] da planilha [Ô]SGTLabBD01[Ô].

Muito obrigado pela resposta!
BRUNOMARQUES14 11/11/2015 08:28:50
#453716
Citação:

:
Só pela curiosidade... teria como postar a planilha pra eu reproduzir o erro? Mesmo tu indo pro Visual Studio, seria bom pra aprender o que deu.



Bom dia!

Eu postei o arquivo na resposta do amigo DS2T.

Obrigado.
ASHKATCHUP 11/11/2015 12:05:52
#453723
  • Para pegar o caminho em que o arquivo PPT se encontra, tu deve utilizar ActivePresentation.path:
    endereco = ActivePresentation.path

  • O campo (coluna) Identificador contém texto, certo? Então tu deve utilizar aspas simples (
  • [ô]) quando for comparar o campo no SQL:
    strSQLAtualizar = [Ô]UPDATE documentacao SET Revisao=[Ô] & rsUpdate!Revisão & [Ô] WHERE Identificador = [ô][Ô] & rsUpdate!identificador & [Ô][ô][Ô]


    Testa isso
    BRUNOMARQUES14 11/11/2015 13:12:56
    #453729
    Citação:

    :

  • Para pegar o caminho em que o arquivo PPT se encontra, tu deve utilizar ActivePresentation.path:
    endereco = ActivePresentation.path

  • O campo (coluna) Identificador contém texto, certo? Então tu deve utilizar aspas simples (
  • [ô]) quando for comparar o campo no SQL:
    strSQLAtualizar = [Ô]UPDATE documentacao SET Revisao=[Ô] & rsUpdate!Revisão & [Ô] WHERE Identificador = [ô][Ô] & rsUpdate!identificador & [Ô][ô][Ô]


    Testa isso



    Boa tarde!

    Bom, acredito que um dos problemas era realmente a falta de aspas simples, mas agora está dado um erro [Ô]A operação deve usar uma consulta atualizável[Ô]. Estou usando cmdCommand.Execute, conforme indicado pelo colega DS2T.
    ASHKATCHUP 11/11/2015 14:07:08
    #453731
    Boa tarde.

    Resolvi o erro.

    Depois de muito procurar a respeito, descobri que esse erro é gerado pela expressão IMEX=1 na string de conexão.
    Essa cláusula (IMEX) orienta o driver de banco de dados a ler colunas com dados mistos (ou seja, mais de um tipo) como string.
    Por causa disso, a planilha fica bloqueada para gravação.

    Não encontrei nenhuma solução sem ser retirar essa parte da string de conexão.

    Fontes:
  • http://www.linhadecodigo.com.br/artigo/2842/problemas-na-manipulacao-de-arquivos-do-ms-excel-com-net.aspx
  • http://stackoverflow.com/questions/7622492/operation-must-use-an-updateable-query-when-updating-excel-sheet
  • https://www.connectionstrings.com/excel/
  • BRUNOMARQUES14 13/11/2015 10:33:06
    #453852
    Citação:

    :
    Boa tarde.

    Resolvi o erro.

    Depois de muito procurar a respeito, descobri que esse erro é gerado pela expressão IMEX=1 na string de conexão.
    Essa cláusula (IMEX) orienta o driver de banco de dados a ler colunas com dados mistos (ou seja, mais de um tipo) como string.
    Por causa disso, a planilha fica bloqueada para gravação.

    Não encontrei nenhuma solução sem ser retirar essa parte da string de conexão.

    Fontes:

  • http://www.linhadecodigo.com.br/artigo/2842/problemas-na-manipulacao-de-arquivos-do-ms-excel-com-net.aspx
  • http://stackoverflow.com/questions/7622492/operation-must-use-an-updateable-query-when-updating-excel-sheet
  • https://www.connectionstrings.com/excel/



  • Bom dia!

    Muito obrigado pela contribuição, acredito que para o que estou precisando não há saída mesmo. Vou começar a desenvolver o visual studio que vai ser melhor.

    Abraço.
    Página 2 de 2 [16 registro(s)]
    Tópico encerrado , respostas não são mais permitidas