Ver Mensaje Individual
  #19 (permalink)  
Antiguo 18/11/2003, 04:01
Avatar de pabli
pabli
 
Fecha de Ingreso: octubre-2003
Mensajes: 381
Antigüedad: 20 años, 7 meses
Puntos: 0
margarita,

cuando se cierra el mundo, nos levantamos, no damos una vueltecita y que nos de el aire, o lo dejamos para otro día, muchas veces el cerebro se me encoje y hay que relajarlo.

carlunchos,

tener fe, más que en el Pablo, en uno mismo.

1-las variables tipo recordset, conexión, command y algunas otras deben declararse a nivel de módulo, pues deberían estar disponibles para todo el programa. Yo intento utilizar los menos recordset posibles, y si solo necesito uno para todo mejor que mejor. Se pueden declarar en el formulario o incluso en un evento pero solo por temas muy concretos y discutibles.

2-el problema creo que solo está en el recordset que se utiliza con openschema, el rst que utilizas para querys normales lo puedes reutilizar, es lo que hago yo siempre. Lo normal es abrir el rec, utilizarlo, y por último cerrarlo, es lo normal. Pero cuando se lo asignas a un Datagrid, no lo puedes cerrar hasta que dejes de utilizar el Datagrid, pues se borrarían los datos. Yo he determinado cerrarlo antes de abrirlo, así me aseguro que esté cerrado y que no de un error, así

If rec.State <> adStateClosed Then
rec.Close
End If

y después de esto abrirlo. Yo lo tengo metido en una función que reutilizo, donde le paso el rec que quiera cerrar.

3-A mi no me gusta definir nombres de (tablas, archivos, variables, etc) con espacios, acentos, "ñ", caracteres raros, pero si me los encuentro no hay más remedio que hacerles frente, utiliza [] para todas las tablas, así te quitas de problemas. Así

rst.Source = "Select * from [" & cboTablas.Text & "]"
rst.Open

4-Deberías sacar el código de apertura del load y meterlo en un botón, menú, etc. Pero es muy importante que si no está abierta la BBDD desactives todo lo relacionado con ella(recordsets, commands, etc), por ejemplo, que no puedan hacer click en el combo, o acceder al formulario donde esté.

5-Las mejoras que te propongo son de filosofía, veo que no comentas el código, muuuuy mal, gran error, es poco código, pero cuando tengas 100 líneas o más y pasen 3 semanas sin tocarlo te va a costar retomarlo o retocarlo un mundo. El último programa que he hecho ocupa 100 páginas de código impresas(solo una cara) y tengo que aumentarlo, casi al doble, imagínate si no lo hubiese comentado, para morirme.
Otro consejo, veo que tienes un END

Private Sub cmdSalir_Click()
End
End Sub

no es buena idea, END finaliza drásticamente el programa, dejando todo bailando. Cuando reservas memoria con SET tienes que liberarla con NOTHING, o sea

Public Function FUN_Cerrar_BBDD()
Gado_conn.Close
Set Gado_conn = Nothing
Set Gado_rec = Nothing
Set Gado_rec_tmp = Nothing
End Function

Sub Form_Unload()
FUN_Cerrar_BBDD
EndSub

no utilices END.

Saludos
Pablo