Ayuda con formas de abrir bases y recordset

Soy yo otra vez.
Me gustaría saber cuales son las formas de abrir bases de datos y recordset. Formas forwardonly todo readonly respecto a eso.
Por ahora trabajo en aplicaciones monousuario. Así que te ahorro la escritura de los tipos compartidos y esas cosas.
Lo que quiero saber es:
1) Necesito cargar un combo. Con datos de una tabla. Usando como indice del combo el id de los registros, para poder después realizar búsquedas.
Yo use un combo común y lo cargue todo por código con un loop. Bueno funciona bien. ¿Quería saber si hay alguna forma más optima para hacerlo y cuales serían las propiedades más apropiadas para abrir la base y los recordset para esta tarea? Yo puse base. OpenRecordset(tabla, dbOpenForwardOnly) ¿Habría qué poner algo más?
2) Para realizar consultas en las que lo único que voy a hacer es marcar un registro, tomar el id y pasárselo a otro formulario para la edición. Que propiedades de conexión y de recorset podrías recomendarme. En el primero supongo que solo lectura y en el segundo alguna que me permita editarlo.
3) En los ejemplos que baje tienen muchas varias formas de abrir las bases y los recordset, no sé si son para distintas cosas pero son tipo así
MiRecordset. Open sql, base,, adOpenStatic, adLockOptimistic, podrías describirme brevemente para que función cumplen esos parametros.
Talvez tengas alguna direccion donde pueda bajarme algunos ejemplo de los distintas formas de abrir las bases y los recordset para poder optimizar mi trabajo.
Puf termine, desde ya muchas gracias.
En el futuro voy a intentar ser más breve con mis preguntas. Es que como tengo tantas ganas de saber, empiezo a escribir y no puedo parar =)

1 respuesta

Respuesta
1
1)
Pon este código un un proyecto,
analiza como funciona, creo que te puede ayudar
Public BDado As New ADODB.Connection
Public RSado As New ADODB.Recordset
Private Sub cbo_Datos_Change()
' Para obtener el código se usa el BoundText
MsgBox (cbo_Datos.BoundText)
End Sub
Private Sub Form_Load()
' Primero agrega al formulario un data combo
' en la lista de componentes se llama Microsoft DataList Controls
' le pones cbo_Datos
' Vamos a usar la conexion que ya tienes creada
BDado.CursorLocation = adUseClient
BDado.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mipath\Biblio.mdb"
' Obtenemos los autores
RSado.Open "SELECT cod_Autor, autor ,nacimiento FROM Autores", BDado
' Se le asigna el Recordset
Set cbo_Datos.RowSource = RSado
cbo_Datos.BoundColumn = "cod_autor" ' El codigo
cbo_Datos.ListField = "autor" ' La descripcion
End Sub
2)
Bueno para empezar, adOpenStatic, adOpenDinamic, adOpenFowarOnly se
refieren a como utilizar las propiedades MoveNext, MoveFirst, MovePrevius, etc...
Es decir el Static, no permite moverse en el recordset FowarOnly solo permite el
moveNext, y el dinamic admite todos (MoveNext, MoveFirst, MovePrevius, etc..)
El adLockOptimistic, adLockPessimistic, adLockReadOnly, adLockBatchOptimistic
se utilizan cuando varios usuarios consultan una misma tabla (concurrencia),
esto para proteger la integridad de los datos.
Cuando usted abre un recordset con adLockOptimistic, nadie puede consultar esos
datos hasta que usted termina la transacción, el Pessimistic, si admite que otros
los usen, el readonly usted no puede hacer cambios, BatchchOptimistic actualiza en lotes
(Muchos datos y funciona igual al adLockOptimistic,)
adOpenStatic: segun entendi conviene usarla cuando vas a mostrar todo el contenido del recordset. Por Ejemplo: en un grid. O cuando sabiendo el id del registro que necesitas, vas a hacer un select de forma que el recordset tenga solamente ese registro. Por ejemplo para editarlo. en un formulario con textbox enlazados al recordset.
adOpenDinamic: cuando necesitas recorrer el recordset viendo todos los registros, para adelante, para atras, para todos lados.
adOpenFowarOnly: segun lo que entendí, serviría para realizar busquedas, o tomar los datos registro por registro para completar por ejemplo un combo...
Si podes darme un ejemplo, hablado a lo bruto como soy yo, para ver si lo entiendo.
Creo yo, que la utilización de estas propiedades están muy ligadas a lo que necesites, lo que te quiero decir es que no existen situaciones puntuales para utilizarlas, por ejemplo: en grid, te sirve tanto un dinamic como un estatic, pero si quieres que el grid presente el resultado de una consulta sobre el recordset, entonces te sirve unicamente el dinamic, ya que para buscar un dato ocupas moverte a través del Recordset, pero si solo mostrás información el static puede servir. Entonces todo depende de lo que vayas a hacer, ahí cuando se te presenten los problemas, te vas a ir dando cuenta de cual debes utilizar, te garantizo que tu mismo vas a poder seleccionar cual utilizar.
Quisiera saber si te sirvió el código del combo.
Acabo de chequear el código como me pediste y funciono a la perfección.
Pero tengo una duda, el combo que necesito usar yo no necesita ser actualizado ni nada. Es solamente para mostrar el nombre de localidad, y utilizo el indice del combo para usar el código postal como lo hice en mi tabla. Después de cargar el combo cierro el recordset y la base.
En el ejemplo que me pasaste vos.
¿Sigue conectado y permite editar?
Aunque por ahora creo que no necesito usarlo me es de mucha utilidad para tener una idea en el futuro.
Desde ya muchas gracias =)
Efectivamente si cierras la conexión el combo se descarga, pero generalmente en una aplicación, la conexión se cierra hasta que dejas la pantalla, esto por que lo que más toma tiempo es hacer la conexión, entonces yo trabajo haciendo la conexión al entrar a la pantalla, y cerrándola la salir. El Recordset, no se cierra lo que se hace es descargarlo de memoria Ejm:Set RSado = Nothing
Bueno, me has respondido a todas mis preguntas más que excelentemente. Y todavía no te he dado ni un punto =(. Disculpame es que siempre aparecen nuevas preguntas.
En el futuro intentare poner nota por cada pregunta y volver a formular las nuevas así podré ayudarte aunque sea subiendo tu puntaje más aun.
Muchas gracias.
pd: ya estoy escribiendo una pregunta nueva =)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas