Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador techniques. Mostrar todas as postagens
Mostrando postagens com marcador techniques. Mostrar todas as postagens

VBA Access - Técnicas para escrever subconsultas - Access Subquery Techniques


Talvez este seja um artigo um pouco mais avançado para os usuários do MS Office que não tenham uma formação voltada para o desenvolvimento e estejam iniciando o seu aprendizado sobre programação agora. Mesmo que este seja o seu perfil, mas deseja ampliá-lo, esforce-se em entendê-lo, afinal de contas é melhor você correr atrás para aprender algo novo, do que ficar vendo conteúdo que já conhece e sabe de trás prá frente.

É verdade que alguns desenvolvedores experientes do MS Access restringem-se a  escrever diretamente no SQL. Bem, a menos que esteja disposto a escrever SQL, não pode usar subconsultas. Estas são uma ferramenta poderosa para resolver alguns problemas especialmente espinhosos de recuperação de dados. Neste artigo veremos uma breve introdução as subconsultas e o modo como pode usá-los no MS Access.

Do começo, o que é uma subconsulta? É fácil, : Uma subconsulta é uma instrução SQL SELECT que está aninhada dentro de outra instrução SQL. 

Você pode usar subconsultas como parte de um SELECT, SELECT INTO, INSERT INTO, DELETE ou UPDATE; neste artigo, só cobriremos subconsultas com instruções SELECT. 

Mas a grande questão é: Por que você quer usar uma subconsulta? Comecemos por olhar para um exemplo prático.

Usando uma subconsulta para calcular intervalos
Suponha que desejasse saber com que freqüência os seus clientes efetuam pedidos (Orders). Neste exemplo, bem como em todos os outros deste artigo, usarei o banco de dados de exemplo Northwind. Você pode criar uma consulta para fornecer estas informações, seguindo estes passos:

1. Crie uma nova consulta baseada na tabela Orders.
2. Escolha mostrar as colunas Customer ID e Order Date.
3. Na linha campo da terceira coluna da consulta, digite a seguinte expressão:

PreviousOrderDate: (SELECT MAX([Order Date]) 
     FROM Orders AS Orders1 
     WHERE Orders1.[Order Date] < Orders.[Order Date] 
     AND Orders1.[Customer ID] = Orders.[Customer ID])

4. Na linha Campo da quarta coluna da consulta, digite a seguinte expressão:

OrderInterval: [Order Date]-[PreviousOrderDate] 

5. Defina o campo CustomerID para classificar ascendente, eo campo OrderDate para classificar em ordem decrescente. Agora, execute a consulta. A Figura 1 mostra os resultados. Para cada ordem pode ver a data do pedido anterior, bem como o número de dias entre as duas ordens. Se você olhar para esta consulta no modo SQL, aqui está o que você vai encontrar:

SELECT Orders.[Customer ID], Orders.[Order Date], 
   (SELECT MAX([Order Date]) 
    FROM Orders AS Orders1 
    WHERE Orders1.[Order Date] < Orders.[Order Date] 
    AND Orders1.[Customer ID] = Orders.[Customer ID]) 
      AS PreviousOrderDate, 
                       [Order Date]-[PreviousOrderDate] AS OrderInterval
FROM Orders
ORDER BY Orders.[Customer ID], Orders.[Order Date] DESC

A declaração SELECT incorporado entre parênteses é a subconsulta. Para ser mais preciso, este exemplo particular é uma subconsulta correlacionada: uma que utiliza um campo a partir da tabela principal como uma parte da cláusula WHERE na subconsulta. O Resultado é similar ao que observa abaixo:


A sintaxe de subconsulta
Uma subconsulta pode aparecer na lista de campo (como no exemplo anterior) ou em uma WHERE ou cláusula HAVING, onde proporciona um conjunto de um ou mais valores para avaliar. Em uma lista de campos, a subconsulta deve retornar um valor único, que normalmente é assegurada usando uma agregação como MAX ou SUM. Na cláusula WHERE ou HAVING existem três formas básicas para uma subconsulta:

COMPARAÇÃO [ANY|ALL|SOME] (subconsulta)

EXPRESSÃO [NOT] IN (subconsulta) 
                     [NOT] EXISTS (subconsulta)

A primeira forma, usando as palavras ANY, SOME, ou ALL permitem filtrar uma consulta com base nos resultados de outra consulta. Por exemplo, considere esta consulta:

SELECT TOP 5 [Standard Cost]
FROM Products
ORDER BY  [Standard Cost] DESC

Isso dá um resultado com os cinco preços mais elevados da tabela Produtos:



Agora, vamos usar isso como uma subconsulta, em primeiro lugar, com a palavra-chave ANY:

SELECT [Standard Cost] FROM PRODUCTS
WHERE [Standard Cost] < ANY
(SELECT TOP 5 [Standard Cost]
FROM Products
ORDER BY [Standard Cost] DESC)
ORDER BY [Standard Cost] DESC

Abaixo visualizamos os dados resultantes da consulta:


Algumas LINHAS foram omitidas

Perceba que o Standard Cost R$ 39,75 foi listado, porque é menor do que qualquer uma das linhas retornadas pela subconsulta. O resultado poderia ser mais claro se usássemos a palavra-chave equivalente SOME (este retorna exatamente os mesmos resultados do exemplo anterior):

SELECT [Standard Cost] FROM PRODUCTS
WHERE [Standard Cost] < SOME
(SELECT TOP 5 [Standard Cost]
FROM Products
ORDER BY [Standard Cost] DESC)
ORDER BY [Standard Cost] DESC

A alternativa é a utilização de ALL em uma subconsulta de comparação, que retorna resultados diferentes. A consulta fica assim:

SELECT [Standard Cost] FROM PRODUCTS
WHERE [Standard Cost] < ALL
(SELECT TOP 5 [Standard Cost]
FROM Products
ORDER BY [Standard Cost] DESC)
ORDER BY [Standard Cost] DESC

E os resultados começam assim:


Agora, o Standard Cost R$ 39,75 é removida dos resultados (junto com vários outros), e a consulta retorna apenas as linhas na tabela principal que são menores do que todas as linhas retornadas pela subconsulta.

A segunda forma de sintaxe para a subconsulta, utilizando IN ou NOT IN, permite que você use um conjunto de valores (em vez de um único valor) em uma cláusula WHERE. Suponha, por exemplo, que deseja ver os nomes de todos os empregados que já vendeu alguma coisa para um cliente particular. Você pode fazer esta subconsulta na cláusula WHERE:

SELECT Employees.[First Name], Employees.[Last Name], Employees.ID
FROM Employees
WHERE (((Employees.[ID]) In (SELECT Orders.[Employee ID]
FROM Orders
WHERE Orders.[Customer ID]=11)))


References: MSDN, Mike Gunderloy

Tags: VBA, Office, Access, subconsulta, Access, subquery, SQL, aninhada, Techniques, Mike Gunderloy, NorthWind, 

VBA Excel - Funções de Programação VBA - VBA Programming Functions



Inline image 1

Alguém tem dúvida de que o MS Excel por si só é uma impressionante e 
poderosa ferramenta para análise de dados? 






Mas ao adicionar programação VBA para suas planilhas de trabalho do MS Excel, as possibilidades de transformar simples dados em informações maravilhosas são quase infinitas. 



Use as seguintes funções para criar poderosas aplicações com MS Excel com VBA:




Inline image 1







Reference:: John Walkenbach




Tags: VBA, Excel, programming, functions, techniques, code




Inline image 1

VBA Excel - Comando comuns no MS Excel - Common VBA Statements for Excel VBA Programming





Que tal uma lista de funções e instruções que podem ser utilizadas no VBA do Microsoft Office?






VBA StatementO que fazem
AppActivateAtiva uma janela de applicação
BeepEnvia um beep pelo alto falante do PC
CallTransfere o controle para outra Procedure
ChDirMuda o diretório corrente
ChDriveMuda o Drive corrente
CloseFecha um arquivo texto
ConstDeclara um valor Constante
DateSets the current system date
DeclareDeclara uma referência a um procedure externa numa DLL (Dynamic Link Library)
DeleteSettingDeletes a section or key setting from an application's entry in the Windows Registry
DimDeclares variables and (optionally) their data types
Do-LoopLoops through a set of instructions
EndUsed by itself, exits the program; also used to end a block of statements that begin with If, With, Sub, Function, Property, Type, or Select
EraseRe-initializes an array
ErrorSimulates a specific error condition
Exit DoExits a block of Do-Loop code
Exit ForExits a block of For-Next code
Exit FunctionExits a Function procedure
Exit PropertyExits a property procedure
Exit SubExits a subroutine procedure
FileCopyCopies a file
For Each-NextLoops through a set of instructions for each member of a series
For-NextLoops through a set of instructions a specific number of times
FunctionDeclares the name and arguments for a Function procedure
GetReads data from a text file
GoSub...ReturnBranches to and returns from a procedure
GoToBranches to a specified statement within a procedure
If-Then-ElseProcesses statements conditionally
Input #Reads data from a sequential text file
KillDeletes a file from a disk
LetAssigns the value of an expression to a variable or property
Line Input #Reads a line of data from a sequential text file
LoadLoads an object but doesn't show it
Lock...UnlockControls access to a text file
MidReplaces characters in a string with other characters
MkDirCreates a new directory
NameRenames a file or directory
On ErrorGives specific instructions for what to do in the case of an error
On...GoSubBranches, based on a condition
On...GoToBranches, based on a condition
OpenOpens a text file
Option BaseChanges the default lower limit for arrays
Option CompareDeclares the default comparison mode when comparing strings
Option ExplicitForces declaration of all variables in a module
Option PrivateIndicates that an entire module is Private
Print #Writes data to a sequential file
PrivateDeclares a local array or variable
Property GetDeclares the name and arguments of a Property Get procedure
Property LetDeclares the name and arguments of a Property Let procedure
Property SetDeclares the name and arguments of a Property Set procedure
PublicDeclares a public array or variable
PutWrites a variable to a text file
RaiseEventFires a user-defined event
RandomizeInitializes the random number generator
ReDimChanges the dimensions of an array
RemSpecifies a line of comments (same as an apostrophe ['])
ResetCloses all open text files
ResumeResumes execution when an error-handling routine finishes
RmDirRemoves an empty directory
SaveSettingSaves or creates an application entry in the Windows Registry
SeekSets the position for the next access in a text file
Select CaseProcesses statements conditionally
SendKeysSends keystrokes to the active window
SetAssigns an object reference to a variable or property
SetAttrMuda o attributo de um arquivo
StaticDeclares variables at the procedure level so that the variables retain their values as long as the code is running
StopPausa o programa
SubDeclara o nome e o argumento de uma Sub Procedure
TimeSets the system time
TypeDefines a custom data type
UnloadRemove um objeto da memória
While...WendEfetua um Loop através do conjunto de instruções, de acordo com certa condição verdadeira
Width #Sets the output line width of a text file
WithSets a series of properties for an object
Write #Grava os dados num arquivo texto sequencial




Reference:: John Walkenbach




Tags: Excel, VBA, Instrunctions, Office,  code, script, techniques



diHITT - Notícias