miércoles, 26 de febrero de 2014

DOBLE CONSULTA MYSQL



A veces necesiatamos realizar una doble consulta en Mysql, para esto simplemente realizamos la primera separamos con un punto y coma (;) la seguna, pero en VBA Excel no podemos guardarla en una solo variable tenemos que guardar las consultas por separado en variable sindependientes.
El siguiente ejemplo simula la accion bancaria de solicitar una consulta de saldo de acuerdo al numero de cuenta, aqui se realiza una consulta de actualización (update) y otra de selección de datos(Select).

Private Sub Consulta_Click()
Dim conexion As New ADODB.Connection
'lo mismo para el nombre del servidor, base de datos, usuario y la consulta sql
Dim miservidor, bd, user, sql, consulta As String
'el Recordset
Dim rs As ADODB.Recordset
'Estableciendo la conexión
miservidor = "127.0.0.1"
bd = "control"
user = "root"
Set conexion = New ADODB.Connection 'con esto utilizamos la conexión indicada más arriba
conexion.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
& ";SERVER=" & miservidor _
& ";DATABASE=" & bd _
& ";UID=" & user _
& ";OPTION=16427?"

' Se crea un objeto rs a partir de la clase RecordSet que permite transferir los datos entre Mysql y Excel 

Set rs = New ADODB.Recordset


'Consulta que actualiza el saldo del cliente descontando 1000 pesos cada vez que realice esta operación
Consulta = “UPDATE clientes set saldo = saldo – 1000 where No_cuenta =’”& TextBox1.Text & “’”

'Ejecutamos la consulta para que se actualice en Mysql

conexion.Execute Consulta

'La segunda consulta muestra en Excel los datos solicitados

sql = "SELECT No_Cuenta, fecha, hora, saldo from clientes " & _
                  "WHERE No_Cuenta = '" & TextBox1.Text & "'"
  


   rs.Open  sql, conexion

With Worksheets(1).Cells

.ClearContents

.CopyFromRecordset rs

End With

'Cerramos la conexión

On Error Resume Next

rs.Close

Set rs = Nothing

conexion.Close

Set conexion = Nothing

On Error GoTo 0

End Sub


Colocar fecha y hora actual en una tabla MySql


mysql> CREATE TABLE tabla_ejemplo ( 
    -> id varchar (12),
    -> descripcion VARCHAR(30),
    -> fecha TIMESTAMP DEFAULT NOW());
Query OK, 0 rows affected (0.03 sec)

No hay comentarios:

Publicar un comentario