Hora: 27-Jan-2020, 11:36 AM ¡Hola, Invitado! (Iniciar sesiónRegístrate)

Enviar respuesta 
Acceso a Datos 12: Altas por SQL / Los dos procesos SQL
Autor Mensaje
admin Sin conexión
Administrator
*******

Mensajes: 16,280
Registro en: Dec 2005
Mensaje: #1
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 www.download.com, 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, un poquito de SQL, 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
......... .addnew
......... .fields("BCO_CVE")=strclave
......... .fields("BCO_NOM")=strnombre
......... .fields("BCO_NOTA")=strnota
......... .update
......... .close
.......end with
.......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, _
.......ByVal pstrCampos As String, _
.......ByVal pstrValores As String, _
.......mostrarmensaje As Boolean) As Boolean
Dim blnConfirma As Boolean
Dim strSQL As String
Dim strMensaje As String
.......... Debug.Print "------- INFO AGREGA REG -------"
.......... Debug.Print "Campos: " & pstrCampos
.......... Debug.Print "Datos : " & pstrValores
.......... strSQL = "INSERT into " & Nombre_Tabla & " ( " & pstrCampos & " )
.......... // VALUES ( " & pstrValores & ")"
.......... blnConfirma = Execute(strSQL)
.......... If blnConfirma Then
............... If mostrarmensaje Then Call MsgBox("*** Registro actualizado ***",
.......... // vbInformation, "Actualización de Registro")
.......... Else
............... strMensaje = "No se agregó el registro , *** Verifique con Sistemas ***"
.............. Call MsgBox(strMensaje, vbCritical, "Agregar Registro")
.......... End If
.......Agrega_Reg = blnConfirma
.......End Function

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

------------------------------------------
Alfonso Orozco - Mayo 2001
ICQ 41907900
02-Apr-2009 08:00 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
  RANTS de Oracle, un manejador de bases de datos admin 5 5,746 13-Apr-2009 01:04 PM
Último mensaje: admin
  Acceso a Datos 07: Principios RAD admin 1 3,305 09-Apr-2009 10:36 AM
Último mensaje: Lux
  Acceso a Datos 16: La esencia de RAD admin 0 3,408 02-Apr-2009 08:01 PM
Último mensaje: admin
  Acceso a Datos 14: RAD Aplicado a diseño de Tablas admin 0 3,767 02-Apr-2009 08:01 PM
Último mensaje: admin

Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Powered By MyBB, © 2002-2020 MyBB Group. | | Theme Created By effone of Equinox Design