Acceso a Datos 12: Altas por SQL / Los dos procesos SQL

Aunque aparentemente no tiene nada que ver, les voy a pedir que instalen por favor el Acrobat Reader, si no lo tienen lo pueden encontrar en casi cualquier disco de ShareWare o en [url=http://www.download.com/]www.download.com[/url], lo necesitarán dentro de poco, ya que mandaré material en ese formato, y además varios de ustedes me pidieron que subiera todo como material de referencia en un solo documento, y lo subiré como PDF.

Como dice el nombre de esta lección, existen dos procesos básicos que pueden hacerse con SQL, el proceso que vimos anteriormente en la lección ocho,

Acceso a Datos 08: Un poquito de SQL

un poquito de SQL[/url], eran las cláusulas SELECT, que tenían como propósito el filtrar la información que necesitamos, para devolvernos un “recordset”, o conjunto de resultados. Los que han usado Access, están acostumbrados a usar la expresión “querys”, para indicar lo mismo, por eso de aquí en adelante me referiré a ellos como Query, aunque realmente me refiero al conjunto de resultados de un SELECT en SQL.

El segundo proceso básico de SQL, son las acciones sobre un conjunto de datos; pueden ser cualquiera de los procesos ABC, así como crear tablas nuevas o añadir información de otras.

En el caso de DAO, el primer proceso se hace a través del objeto database y su método openrecordset, y en ADO se realiza con la conexión ADODB Vigente y su método OPEN.

En el segundo proceso, DAO usa el método EXECUTE del objeto database, y ADO el mismo método pero del objeto adodb.connection.

La sintaxis que se usa es demasiado amplia por lo general para poder abordarla aqui con detalle, pero a grandes rasgos este es el código necesario para dar un alta en DAO a través de SQL.

Como hemos hecho antes, pondremos // para indicar que lo que sigue debe de ir en la linea anterior.

‘ se supone que los datos que queremos guardar están en
‘ las tres variables del correo anterior, strnombre, strclave y strnota
dim strsql as string
strSQL = “INSERT into bancos ( BCO_CVE,BCO_NOM,BCO_NOTA ) VALUES ( ‘”& STRCLAVE
// “‘,'” & strnombre”,'” & strnota &”‘)”
mibasededatos.execute strsql

EN DAO tradicional la orden sería así:

dim rs as dao.recordset
set rs=mibasededatos.openrecordset(“select * from BANCOS”)
with rs
[color=#000000]……… .addnew
[color=#000000]……… .fields(“BCO_CVE”)=strclave
[color=#000000]……… .fields(“BCO_NOM”)=strnombre
[color=#000000]……… .fields(“BCO_NOTA”)=strnota
[color=#000000]……… .update
[color=#000000]……… .close
[color=#000000]…….end with
[color=#000000]…….set rs=nothing

Cual creen que sea mas rápido?. Podemos incluso hacer una función genérica que realice el proceso por nosotros, y quedaría una sola línea:

agrega_datos(“BANCOS”,”BCO_CVE,BCO_NOM,BCO_CTA”,”‘” & STRCLAVE “‘,” &
// “‘” & strnombre “‘,'” & strnota &”‘”)

OJO:Fijense que entre el nombre de las variables hay un apóstrofe. Una de las pocas limitaciones de SQL es que nos obliga a poner entre comillas simples ( ascii 39 ) las cadenas de caracteres que pasemos como parámetro. Si estuvieramos usando números, no habria problemas SI NO TIENE COMAS; Para pasar un boolean, poner true or False sin comillas es suficiente. Por cierto, las fechas tienen una limitación especial que veremos en unos cuantos correos, las ignoraremos por ahora. Si quieren pasar un valor Nulo, se pone la cadena Null, sin comillas

A continuación les pongo la función que utilizo, en DAO y en ADO para dar un alta. Aparentemente no funciona, porque no existe la orden EXECUTE. Eso esta pensado; si quieren usarla ahora solo cambien execute por adodb.connection.execute si usan ADO, o midatabase.execute si usan DAO. Yo les sugiero que se esperen, y mas adelante veremos como migrar de DAO a ADO no es difícil si usan las sentencias SQL en lugar de las ordenes .addnew que vimos arriba.

Public Function Agrega_Reg(ByVal Nombre_Tabla As String, _
[color=#000000]…….ByVal pstrCampos As String, _
[color=#000000]…….ByVal pstrValores As String, _
[color=#000000]…….mostrarmensaje As Boolean) As Boolean
Dim blnConfirma As Boolean
Dim strSQL As String
Dim strMensaje As String
[color=#000000]………. Debug.Print “——- INFO AGREGA REG ——-”
[color=#000000]………. Debug.Print “Campos: ” & pstrCampos
[color=#000000]………. Debug.Print “Datos : ” & pstrValores
[color=#000000]………. strSQL = “INSERT into ” & Nombre_Tabla & ” ( ” & pstrCampos & ” )
[color=#000000]………. // VALUES ( ” & pstrValores & “)”
[color=#000000]………. blnConfirma = Execute(strSQL)
[color=#000000]………. If blnConfirma Then
[color=#000000]…………… If mostrarmensaje Then Call MsgBox(“*** Registro actualizado ***”,
[color=#000000]………. // vbInformation, “Actualización de Registro”)
[color=#000000]………. Else
[color=#000000]…………… strMensaje = “No se agregó el registro , *** Verifique con Sistemas ***”
[color=#000000]………….. Call MsgBox(strMensaje, vbCritical, “Agregar Registro”)
[color=#000000]………. End If
[color=#000000]…….Agrega_Reg = blnConfirma
[color=#000000]…….End Function

En el próximo, veremos como se hace una baja y un cambio por SQL.

——————————————
Alfonso Orozco – Mayo 2001
ICQ 41907900

Comments are Closed