Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
ribeironeves
Valued Contributor

Update sql server (Tabela de Preços)

Bom dia Senhores,

Tenho um tabela de preços, e

Gostaria de saber ser é possível atualizar o preço através de macro.

Variável x Preço_Custo =

Atualizar Preços

Tem como?

2016-03-04_10-00-21.png

Agnaldo Neves
Tags (1)
1 Solution

Accepted Solutions
MVP
MVP

Re: Update sql server (Tabela de Preços)

Agnaldo,

segue um modelo que fiz a um tempo atras.....estou sem SQL agora mas sei que funcionava...

este tipo de rotina chama-se   writeback

Tem este produto no market da Qlik

http://market.qlik.com/writeback-extension-installer.html

e tem este tambem

SQL Writeback from QlikView extension object.

13 Replies

Re: Update sql server (Tabela de Preços)

Agnald, neste post tem um exemplo de como fazer manipular dados no SQL através do próprio SCript ou Macros.

SQL Insert from QlikView.qvw

ribeironeves
Valued Contributor

Re: Update sql server (Tabela de Preços)

Bom entendi, como funciona.

Mas precisava fazer update e não estou sabendo.

Eu só preciso atualizar um campo chamado Preco.

Ele será, atualizado, caso vPreco seja maior > que 0

Depois também tem a macro.

Caso tenha uma luz.

Tem o  exemplo anexo.

sum({<[Ordem_Tabela_Preco]={'2'} >}Preco) * vPreco


Tabela:


OLEDB CONNECT32 TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=S9_Real;Data Source=localhost\shopcontrol9;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DESKTOP-F42VGP2;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is SeFWeJVMODaCWYIGTJWA);


SQL

INSERT INTO [dbo].[Prod_Serv_Precos]

      

           ([Preco]

      

     VALUES

           ('$(Preco)';



Agnaldo Neves

Re: Update sql server (Tabela de Preços)

Se você quer jogar os valores da sua tabela dentro do banco, então creio que tenha que fazer via macro mesmo. Dentro da macro você faz a verificação do valor de sua variável.

Por exemplo:

set Preco = ActiveDocument.Variables("vPreco")

if Preco > 0 then

......

end if

Em relação ao update, é questão de verificar a sintaxe e trocar para o update.

Se seus valores que deverão ser atualizados estão no objeto de tabela, então precisa usar essa macro para conseguir ler os valores:

Sub ReadStraightTable

Set Table = ActiveDocument.GetSheetObject( "CH01" )
For RowIter = 0 to table.GetRowCount-1
   For ColIter = 0 to table.GetColumnCount-1
        set cell = table.GetCell(RowIter,ColIter)
        Msgbox(cell.Text)
    Next
Next

End Sub

ribeironeves
Valued Contributor

Re: Update sql server (Tabela de Preços)

Yuri,

A tabela será sempre de atualização

Pois a Tabela é um complemento do cadastro de produtos.

A Tabela não receberá update de registro(novos registros), mas apenas atualização.

Exemplo: produto 499 acima

Preço Atual : 0,02

Preço varíavel:  0,1

O Campo Ordem_Produto será chave primária para a (atualização)

O Campo Preco Será o campo a ser atualizado.

Estes campos acima estão no exemplo acima no anexo.

Agnaldo Neves
ribeironeves
Valued Contributor

Re: Update sql server (Tabela de Preços)

Desculpe-me Yuri,

É que o exemplo que você me passou tem 03 variáveis.

E o meu apenas uma.

Agnaldo Neves

Re: Update sql server (Tabela de Preços)

Isso Agnaldo, update é o comando de atualizar os registros de uma tabela no sql

Comandos básicos em SQL - insert, update, delete e select

Re: Update sql server (Tabela de Preços)

Agnaldo, estou te passando uma forma de resolver o seu caso, não tenho um SQL aqui para testar, mas basicamente os passos para resolver o problema são:

  • Através de macro crie a conexão com o seu banco de dados

Set objConnection = CreateObject("ADODB.Connection")

objConnection.Open "Provider=SQLOLEDB;Data Source=SEUDATASOURCE;Trusted_Connection=Yes;InitialCatalog=CATALOG;User ID=USUARIO;Password=SENHA;"

  • Utilize a macro para verificar o valor da variável do preço:

set Preco = ActiveDocument.Variables("vPreco")

if Preco > 0 then

     'ALguma ação'

end if

  • Utilize a macro para varrer os registros de seu gráfico

Sub ReadStraightTable

Set Table = ActiveDocument.GetSheetObject( "CH01" )
For RowIter = 0 to table.GetRowCount-1
   For ColIter = 0 to table.GetColumnCount-1
        set cell = table.GetCell(RowIter,ColIter)
        'Msgbox(cell.Text)

         Neste ponto você faz o comando de update para jogar os valores
    Next
Next

End Sub

MVP
MVP

Re: Update sql server (Tabela de Preços)

Agnaldo,

segue um modelo que fiz a um tempo atras.....estou sem SQL agora mas sei que funcionava...

este tipo de rotina chama-se   writeback

Tem este produto no market da Qlik

http://market.qlik.com/writeback-extension-installer.html

e tem este tambem

SQL Writeback from QlikView extension object.

ribeironeves
Valued Contributor

Re: Update sql server (Tabela de Preços)

Alessandro vou testar,

Estou vendo também a maneira do Yuri.

Estou com pouco de dificuldades.

Vou ver até onde eu chego.

Obrigado.

Agnaldo Neves