Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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?
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.
Agnald, neste post tem um exemplo de como fazer manipular dados no SQL através do próprio SCript ou Macros.
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)';
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
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.
Desculpe-me Yuri,
É que o exemplo que você me passou tem 03 variáveis.
E o meu apenas uma.
Isso Agnaldo, update é o comando de atualizar os registros de uma tabela no sql
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:
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=SQLOLEDB;Data Source=SEUDATASOURCE;Trusted_Connection=Yes;InitialCatalog=CATALOG;User ID=USUARIO;Password=SENHA;"
set Preco = ActiveDocument.Variables("vPreco")
if Preco > 0 then
'ALguma ação'
end if
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
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.
Alessandro vou testar,
Estou vendo também a maneira do Yuri.
Estou com pouco de dificuldades.
Vou ver até onde eu chego.
Obrigado.