Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Ribeiro
Specialist
Specialist

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

Neves
1 Solution

Accepted Solutions
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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.

furtado@farolbi.com.br

View solution in original post

13 Replies
nicolett_yuri

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

Ribeiro
Specialist
Specialist
Author

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)';



Neves
nicolett_yuri

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

Ribeiro
Specialist
Specialist
Author

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.

Neves
Ribeiro
Specialist
Specialist
Author

Desculpe-me Yuri,

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

E o meu apenas uma.

Neves
nicolett_yuri

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

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

nicolett_yuri

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

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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.

furtado@farolbi.com.br
Ribeiro
Specialist
Specialist
Author

Alessandro vou testar,

Estou vendo também a maneira do Yuri.

Estou com pouco de dificuldades.

Vou ver até onde eu chego.

Obrigado.

Neves