Actualizacion de formularios automáticos

Martes, 31 de Enero de 2012
En este ejemplo de actualizacion de formularios lo que haremos cera lo siguiente, en un formulario basado en una tabla introduciremos 1 registro en la tabla y ese a su vez aunque la tabla este abierta por otro usuario o el mismo usuario se mostrara el registro añadido en el formulario
Primero agregamos el registro ala tabla, después de 10segundos se visualiza en el formulario.
‘evento al cargar el formulario
Private Sub Form_Load()
Me.TimerInterval = 10000
End Sub
‘evento al terminar el intervalo declarado al cargar el formulario
Private Sub Form_Timer()
Dim tiempo As Long
tiempo = Me.Id
DoCmd.Echo False
Me.Requery
Me.Id.SetFocus
DoCmd.FindRecord tiempo
DoCmd.Echo True
End Sub

Utilizando el evento Timer

Martes, 31 de Enero de 2012
El evento Timer configura un evento para que se lance al final de un intervalo. En el procedimiento del evento Timer se puede escribir cualquier cosa que se pueda programar utilizando VBA.
En el siguiente ejemplo utilizaremos el evento Timer en un formulario de bienvenida.
‘Evento al cargar le formulario
Private Sub Form_Load()
Me.TimerInterval = 10000
End Sub
‘Evento al terminar el tiempo declarado en el evento al cargar el ‘formulario
Private Sub Form_Timer()
DoCmd.Close acForm, «Bienvenida», acSaveYes
End Sub

Curso de Access 2003 Basico

Les dejo un curso de Access  2003 en el cual podran entender la funcionalidad de Access en un nivel basico

http://www.4shared.com/get/ZWUVMduP/Curso_de_Access_2003.html

Formularios

miércoles, 25 de enero de 2012
Introducción
Las aplicaciones utilizan los formularios, junto con los informes, para presentar datos. Los formularios presentan un método para aceptar y responder las acciones del usuario. Dado que los usuarios de una aplicación de base de datos interactúan con una aplicación casi completamente a través de formularios, el diseño del formulario y su comportamiento es muy importante. Este capitulo explica como utilizar los formularios Microsoft Access con datos y ofrece una introducción general al trabajo con formularios y sus controles. También aprenderemos las funciones mas generales que realizan los formularios, incluyendo formularios que actúan como temporizadores.
Los primeros ejemplos de este capitulo muestran técnicas de desarrollo y presentación de pantallas de introducción a una aplicación los formularios de control.
Iniciaremos los ejemplos en el siguiente capitulo.

Selección con uniones

miércoles, 25 de enero de 2012
Todas las formas de mezclar orígenes de datos que hemos visto ahora se centran en unir uno o mas orígenes de datos sobre uno o mas campos comunes.
El siguiente ejemplo muestra tres orígenes de datos de la base de datos Northwind las tablas Customers, Suppliers y Employees.
Sub uniones3()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT CompanyName,ContactName,Phone » & _
«FROM Customers » & _
«Union » & _
«SELECT CompanyName, ContactName, Phone » & _
«FROM Suppliers » & _
«UNION » & _
«SELECT ‘Northwind’,» & _
«FirstName& ‘ ‘&LastName AS ContacName, HomePhone » & _
«FROM EMPLOYEES»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub
Este es el ejemplo final de este Capitulo.

Selección de sub-consultas

martes, 24 de enero de 2012
Una sub consulta es una sentencia SELECT anidada en otra sentencia SELECT. La consulta, en ocasiones  se le conoce como una consulta externa. Existen dos tipos de subconsultas. En primer lugar, se puede expresar la subconsulta de forma que la consulta interna se calcule solo una vez para la consulta externa.
Este ejemplo selecciona los empleado que contiene otro emplead que les informa.
Sub subconsulta()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT DISTINCT EmployeeID, » & _
«FirstName, LastName » & _
«FROM Employees » & _
«WHERE EmployeeID IN (SELECT ReportsTo FROM Employees)»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub
El siguiente ejemplo demuestra la utilización de una subconsulta correlacionada para encontrar el OrderID con el mayor precio extendido para cada ProductoID.
Sub subconsulta2()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT od.OrderID, od.ProductID, » & _
«FORMATCURRENCY(od.UnitPrice*od.Quantity*od.Quantity» & _
«*(1-od.Discount),2) AS Price » & _
«FROM [Order Details] od » & _
«WHERE od.UnitPrice*od.Quantity*(1-od.Discount) IN » & _
«(SELECT » & _
«MAX(odsub.UnitPrice*odsub.Quantity*(1-odsub.Discount)) » & _
«FROM [Order Details] odsub » & _
«WHERE od.ProductID = odsub.ProductID)»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub

Uniones reflexivas

martes, 24 de enero de 2012
El ejemplo busca generar una lista de directivos, asi que prefija los campos  EmployeeID, FirstName y LastName de la lista de campos SELECT con eInfo, porque los ID y nombre del directivo se encuentran en la tabla eInfo.
Sub uniones()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT DISTINCT eInfo.EmployeeID, eInfo.FirstName, » & _
«eInfo.LastName » & _
«FROM Employees as eMgr INNER JOIN Employees AS eInfo » & _
«ON eMgr.ReportsTo = eInfo.EmployeeID»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub
El siguiente ejemplo lista los pedidos realizados durante 1998 que se distribuyeron después de la fecha prevista. La tabla Orders contiene las columnas ShippedDate y RequiredDate, que hacen posible realizar la tarea con una unión reflexiva.
Sub union1998()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT o1.OrderID, o1.ShippedDate, » & _
«o2.RequiredDate » & _
«FROM Orders AS o1 » & _
«INNER JOIN Orders AS o2 » & _
«ON (o1.OrderID = o2.OrderID) » & _
«AND (o1.ShippedDate > o2.RequiredDate)» & _
«WHERE Year(o1.OrderDate) = 1998»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub

Selección con uniones externas y uniones reflexivas

lunes, 23 de enero de 2012
Las uniones internas mezclan registros de dos tablas cuando los registros satisfacen los criterios de la unión como por ejemplo, que tengan valores iguales para un campo. Access permite otros tipos de uniones. Por ejemplo, se puede forzar que todos los registros de una tabla aparezcan en un conjunto de resultados sin importar si satisfacen la condición, a esto se le llama la unión externa.
Uniones externas por la derecha.
La unión se lleva a cabo entre dos orígenes de datos. SQL declara estos orígenes como orígenes izquierdo y derecho dependiendo del orden de argumentos en la clausula FROM , el primer origen de datos es el izquierdo y el segundo el derecho.
Sub derecha()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT c.CategoryName, p.ProductName, p.Discontinued » & _
«FROM Categories c RIGHT OUTER JOIN Products p » & _
«ON c.CategoryID = p.CategoryID » & _
«WHERE IsNull(p.CategoryID)»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub

Selección de uniones internas

lunes, 23 de enero de 2012
Una de las características mas eficaces de las consultas de selección es su capacidad de combinar dos o mas tablas en una virtual. Una unión ofrece un modo de lograr esto. Esta técnica solo permite mezclar dos tablas. Pero se pueden mezclar dos tablas con un tener origen de datos y mezcla ese resultado con otro,etc. El conjunto de resultados de la consulta de selección puede incluir los campos de cualquiera de los orígenes de daos que mezcla.
Se pueden unir dos orígenes de datos sobre cualquier campo o campos con el mismo tipo de datos siempre que no seas tipos de datos memo y OLEObject. Las tablas a unir se indican como argumentos de la palabra clave FROM de una consulta de selección. Los nombres de la tabla se separan con palabras clave INNER JOIN.  Después del segundo origen de datos se escribe la palabra clave ON, que indican la siguiente identificación de los campos de cada origen de datos.
Sub innerjoin()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT Categories.CategoryName, Products.ProductName,Products.Discontinued » & _
«FROM Categories INNER JOIN Products » & _
«ON Categories.CategoryID = Products.CategoryID»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub
La sentencia SQL de este ejemplo final de uniones internas agrupa los registros por el campo CompanyName de la tabla Customers y calcula los ingresos de cada cliente.
Sub innerjoin3()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT c.CompanyName, » & _
«FORMATCURRENCY(» & _
«SUM(od.[UnitPrice]*od.[Quantity]*(1-od.[Discount])),2) » & _
«AS Ingresos » & _
«FROM (Customers c » & _
«INNER JOIN Orders o ON c.CustomerID = o.CustomerID) » & _
«INNER JOIN [Order Details] od » & _
«ON o.OrderID = od.OrderID » & _
«GROUP BY c.CompanyName » & _
«ORDER BY » & _
«SUM(od.[UnitPrice]*od.[Quantity]*(1-od.[Discount])) DESC»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub

HAVING

miércoles, 18 de enero de 2012
Añadiendo una clausula HAVING a una sentencia SQL con una clausula GROUP BY, se puede filtrar el conjunto de resultados de la sentencia SQL. La clausula HAVING funciona como una clausula WHERE, exceptuado que la clausula HAVING filtra los resultados de una clausula GROUP BY.
Sub having()
‘declaramos las variables
Dim sentencia As String
‘establecemos las variables
sentencia = «SELECT Discontinued, CategoryID, SUM(UnitsInStock) » & _
«As [Unidades en almacen] » & _
«FROM Products » & _
«GROUP BY Discontinued, CategoryID » & _
«HAVING Discontinued = TRUE AND SUM(UnitsInStock)>0»
recordss sentencia
End Sub
Sub recordss(sentencia As String)
Dim registros As ADODB.Recordset
Dim campo As Field
Dim entero As Integer
Set registros = New ADODB.Recordset
registros.ActiveConnection = «Provider=Microsoft.Jet.OLEDB.4.0;» & _
«Data Source=» & CurrentProject.Path & «\Northwind.mdb»
registros.Open sentencia
entero = 1
Do Until registros.EOF
Debug.Print «Resultado: » & entero
For Each campo In registros.Fields
If Not (campo.Type = adLongVarBinary) Then _
Debug.Print String(5, » «) & _
campo.Name & » = «; campo.Value
Next campo
registros.MoveNext
If entero >= 10 Then
Exit Do
Else
entero = entero + 1
Debug.Print
End If
Loop
‘lebera los objetos
registros.Close
Set registros = Nothing
End Sub