Foros del Web » Programación para mayores de 30 ;) » Programación General »

Bases de datos en VB 6.0

Estas en el tema de Bases de datos en VB 6.0 en el foro de Programación General en Foros del Web. Estoy trabajando con bases de datos en Access a través de Visual Basic 6.0 Necesito borrar las filas de una tabla, y a continuación añadirle ...
  #1 (permalink)  
Antiguo 28/11/2003, 17:20
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 9 meses
Puntos: 0
Bases de datos en VB 6.0

Estoy trabajando con bases de datos en Access a través de Visual Basic 6.0 Necesito borrar las filas de una tabla, y a continuación añadirle unas filas nuevas. Las consultas en sql ya las tengo escritas. Lo que no sé es mediante qué comando realizar estos cambios. Para consultas de tipo "select" utilizo OpenRecordset, y me devuelve la consulta en una variable de tipo recordset, pero en este otro caso es diferente.
Para realizar estas consultas estoy utilizando ADO. Muchas gracias por todo
  #2 (permalink)  
Antiguo 29/11/2003, 13:47
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola AIGAMA,

Para todo tipo de modificación de los registros de una tabla utiliza el objeto "command" pasándole la query:

objCommand.CommandText="delete from ..."
objCommand.execute

Saludos
Pablo
  #3 (permalink)  
Antiguo 29/11/2003, 16:07
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola Pabli,
Acabo de intentar hacerlo como tú me has dicho. Defino una variable de tipo QueryDef, pero el comando CommandText no está definido. El código sería así:

dim qd as QueryDef
qd.CommandText="delete from ..."
qd.execute

Hay algo que haga mal?
Gracias por todo
  #4 (permalink)  
Antiguo 30/11/2003, 08:09
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 5 meses
Puntos: 0
Aigama,

no hablamos de lo mismo, QueryDef se utiliza con DAO, no con ADO. Si quieres utilizar ADO, abre una conexión con la BBDD a través de este proveedor y después:

--------------------------------------------------------------------------
'En la sección general de declaraciones***************
Dim Gado_conn As ADODB.Connection 'Abre una conexión
Dim Gado_command As ADODB.Command 'Envía comandos

En el load del form, por ejemplo***************
'Creo un objeto Command para ejecutar las inserciones y actualizaciones
Set Gado_command = New ADODB.Command
Gado_command.ActiveConnection = Gado_conn 'Esta es la variable tipo connection
Gado_command.CommandType = adCmdUnknown 'Predeterminado

'Donde quieras***************
'Monto la cadena SQL
Gado_command.CommandText = "Update tabla ..."
'Actualizo
Gado_command.Execute
--------------------------------------------------------------------------

En este ejemplo no se ve como se abre la base de datos, pero imagino que sabrás hacerlo pues dices que estás utilizando ADO para las consultas.

Si no te funciona, escribes

Saludos
Pablo
  #5 (permalink)  
Antiguo 30/11/2003, 11:15
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 9 meses
Puntos: 0
Y si quiero hacerlo mediante objetos DAO? No se puede hacer? Es que si activo los objetos ADO probablemente tendría problemas con el resto de mi proyecto, ya que la apertura y el cierre de la base de datos se realiza unicamente una vez, y al utilizar objetos de tipo DAO durante todo el proyecto, debería cambiar muchas cosas.

Gracias por todo

Ainara
  #6 (permalink)  
Antiguo 30/11/2003, 12:41
Avatar de pabli  
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola Ainara,

En efecto, si lo has empezado con DAO no cambies, per te recomiendo ADO para los siguientes. Puedes utilizar DAO y ADO en un mismo proyecto y contra una misma base de datos, yo lo he hecho, pero nominando los objetos con cuidado pues algunos se llaman igual. Si declaras esto:
Dim rec as Recordset
que estás declarando, ¿un objeto DAO o ADO? es mejor
Dim rec as ADODB.Recordset
queda claro que es ADO.
Entre ADO y DAO no hay color, este último paso a la historia

Te paso una función que he encontrado en un programa antiguo, solo la tienes que modificar para que te sirva:

--------------------------------------------------------------------
'************************************************* ************************************************** ********
'** FUNCION Hacer_QRD
'** Descripcion: Esta funcion se encarga de realizar una querie en el servidor por medio de un querydef
'** Debe de pasarsele los datos necesarios para realizarlo
'** Parametros:
'** Cadena_SQL: - Tipo Cadena por valor
'** - Esta variable contiene la sentecia SQL que se va a utilizar para realizar la Querie
'**
'** Cadena_Conexion: - Tipo Cadena por valor
'** - Esta variable contiene el valor de la cadena de conexion a la BD segun los parametros iniciales
'**
'** Timeout: - Tipo Entero por valor
'** - Contiene el valor de tiempo que va ha esperar la respuesta por parte de la BD
'** Variables globales que modifica: N/A
'** Referencia a Funciones: N/A
'** Valores devueltos:
'** - 0 --> La funcion se ha realizado correctamente.
'** - 1 --> La funcion no se ha completado correctamente
'************************************************* ************************************************** ********
Function Hacer_QRD(ByVal Cadena_SQL As String, ByVal Cadena_Conexion As String, ByVal Timeout As Integer) As Integer
Dim QRD_Querie As QueryDef
'Control de Errores
On Error GoTo CONTROL_ERRORES:

'Ponemos el puntero del raton con reloj
Screen.MousePointer = 11
DoEvents

'Creamos el queriedef
Set QRD_Querie = G_Database.CreateQueryDef("")
QRD_Querie.Connect = Cadena_Conexion
QRD_Querie.ReturnsRecords = False
QRD_Querie.ODBCTimeout = Timeout
QRD_Querie.SQL = Cadena_SQL
DoEvents
QRD_Querie.Execute

'Ponemos el puntero del raton con flecha
Screen.MousePointer = 0

'Cerramos el Querydef
QRD_Querie.Close
Hacer_QRD = 0
Exit Function

'Control de Errores
CONTROL_ERRORES:
If Err.Number <> 0 Then
Hacer_QRD = 1
Exit Function
End If

End Function
--------------------------------------------------------------------

G_Database es una variable tipo "Database", a nivel de módulo.
Espero que te sirva.

Saludos
Pablo
  #7 (permalink)  
Antiguo 01/12/2003, 15:11
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias por mandarme ese código. Por fin he conseguido que funcionara. Muchas gracias! :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:27.