Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Ribeiro
Specialist
Specialist

Ao carregar script, verificar tabela temporária

Bom gostaria de ajuda.

Preciso ao carregar o script que ele check uma tabela Liberação no qlikview e não deixe carregar.

Lembrando que o campo liberação 5 da Tabela Sql, deverá ser o mesmo da Liberação

Campo: Liberação5

A lógica é seguinte: Caso a TabelaSql Campo: Liberação5 seja diferente da Tabela Liberação, que ele não carreque o script.2015-09-30_13-44-44.jpg

Existe como?

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

TabelaLiberação:

SQL SELECT "Data_Alteracao",

    "Data_Validade",

    Liberacao1,

    Liberacao2,

    Liberacao3,

    Liberacao4,

    Liberacao5,

    Ordem,

    "Ordem_Funcionario_Alteracao",

    Validacao

FROM "S9_Controle".dbo.Liberacao;

LiberacaoTemp:

LOAD * INLINE [

    Liberacao5,

    SZLC

 

];

Section Application;

Neves
1 Solution

Accepted Solutions
nicolett_yuri

Segue em anexo Agnaldo

Você terá que adaptar um pouco o script, mas basicamente é:

  1. Cria uma tabela com o valor que deseja verificar (no exemplo a tabela é Informacao_A_Ser_Verificada)
  2. Faça uma leitura da sua tabela do banco e carregue somente o campo a ser verificado (no exemplo a tabela é Informacao_Do_Banco)
  3. Faça a verificação dos campos (IF FieldValue('CampoDigitado',1) = FieldValue('Liberacao5',1) THEN)
    1. Importante informar que: A comparação que criei vai verificar a primeira linha de cada tabela, se a sua tabela do banco retornar várias informações, então você precisa tratar isso ou alterar a forma de verificação.
  4. De acordo com a verificação eu carrego ou não as informações.

View solution in original post

8 Replies
Ribeiro
Specialist
Specialist
Author

Me passarm um modelo assim, mas não funcionou..

Tem como melhorar...

SET vBloqueiaQVW = 'SZLC'; 

 

if vBloqueiaQVW <> 'SZLC' THEN 

 

TRACE 'Liberado'; 

 

ELSE 

 

TRACE 'Bloqueado...'; 

 

ENDIF 

Neves
nicolett_yuri

Agnaldo, qual que é a lógica que você precisa?

Verificar se o campo Liberacao5 for diferente de 'SZLC', se for diferente carrega a tabela, caso contrário não carrega?

Ribeiro
Specialist
Specialist
Author

Yuri é isso.

Neves
Ribeiro
Specialist
Specialist
Author

Se for igual carregar, se for diferente não carregar..

Neves
nicolett_yuri

Segue exemplo

Ribeiro
Specialist
Specialist
Author

Yuri, eu acho que devo está fazendo algo errado.

Seque o arquivo

http://consultoriasoft.com.br/arquivos/121.zip

A ideia é simples, Tenho um tabela sql server chamada liberacao5

a cada 03 meses este numero é trocado.

Eu vou digitar este número dentro do script do qlikview.

Então quando for carregar o script e campo liberacao5 for diferente liberacao5 que eu digitei ele não carreque o script.

Talvez você tenha me passado corretamente. Eu que não tenha feito de forma correta.

2015-09-30_21-19-49.jpg

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=AGNALDO;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is EbWbXJVMODaCWYIGTJQA);

LOAD * INLINE [

    Liberacao1, Liberacao2, Liberacao3, Liberacao4, Liberacao5, Ordem

    BLA, BLE, BLI, BLO, SZLC, BLU

];

IF FieldValue('Liberacao5',1) = 'SZLC' THEN

  TRACE

  LOAD Ordem,

    Liberacao1,

    Liberacao2,

    Liberacao3,

    Liberacao4,

    Liberacao5,

    "Data_Validade",

    "Data_Alteracao",

    "Ordem_Funcionario_Alteracao",

    Validacao;

SQL SELECT *

FROM "S9_Controle".dbo.Liberacao;

ELSE

  TRACE NÃO VAI CARREGAR NADA!;

END IF

DROP TABLE TabelaLiberação;

Neves
nicolett_yuri

Segue em anexo Agnaldo

Você terá que adaptar um pouco o script, mas basicamente é:

  1. Cria uma tabela com o valor que deseja verificar (no exemplo a tabela é Informacao_A_Ser_Verificada)
  2. Faça uma leitura da sua tabela do banco e carregue somente o campo a ser verificado (no exemplo a tabela é Informacao_Do_Banco)
  3. Faça a verificação dos campos (IF FieldValue('CampoDigitado',1) = FieldValue('Liberacao5',1) THEN)
    1. Importante informar que: A comparação que criei vai verificar a primeira linha de cada tabela, se a sua tabela do banco retornar várias informações, então você precisa tratar isso ou alterar a forma de verificação.
  4. De acordo com a verificação eu carrego ou não as informações.
Ribeiro
Specialist
Specialist
Author

Obrigado Yuri 150% certo.

Só tenho que colocar o script dentro da rotina e tudo certo.

Não alterou a linha ok 100%

2015-10-01_16-46-23.jpg

Alterei o campo: 100% ok

2015-10-01_16-45-08.jpg

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=AGNALDO;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is EbWbXJVMODaCWYIGTJQA);

Informacao_A_Ser_Verificada:

LOAD * INLINE [

    CampoDigitado

    SZLM

];

Informacao_Do_Banco:

SQL SELECT

  Liberacao5

FROM "S9_Controle".dbo.Liberacao;

IF FieldValue('CampoDigitado',1) = FieldValue('Liberacao5',1) THEN

  TRACE Carrega a tabela!;

  Liberacao:

  LOAD

  Ordem,

     Liberacao1,

     Liberacao2,

     Liberacao3,

     Liberacao4,

     Liberacao5,

     "Data_Validade",

     "Data_Alteracao",

     "Ordem_Funcionario_Alteracao",

     Validacao;

  SQL SELECT *

  FROM "S9_Controle".dbo.Liberacao;

  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=AGNALDO;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is SEDHWJVMODaCWYIGTRBA);

    //-------- Start Multiple Select Statements ------

Classes:

LOAD Ordem,

    Codigo,

    Nome,

    Deposito,

    "Nao_Envia_Web",

    "Data_Alteracao",

    Inativo,

    "Ordem_Funcionario_Alteracao",

    Validacao;

SQL SELECT *

FROM "S9_Real".dbo.Classes;

//-------- End Multiple Select Statements ------

ELSE

  TRACE NÃO VAI CARREGAR NADA!;

END IF

DROP TABLE Informacao_A_Ser_Verificada, Informacao_Do_Banco;

Neves