ayuda con visual y las bd

Iniciado por Hans el Topo, 22 Junio 2006, 17:04 PM

0 Miembros y 3 Visitantes están viendo este tema.

Hans el Topo

estoy intentando hacer un programa para gestionar una base de datos access 2000 y buf... creo que o tengo un pequeño lio montao o el programa se esta despollando de mi xdd
cuando pongo vigilancia para ver si lo hace bien (puntos de ruptura) me funciona todo correcto, cuando se la kito nada funciona... y juer como puede funcionar un mismo dato una vez y a la siguiente no?

bueno... tras mis lamentaciones/desahogos iniciales me gustaria preguntar si alguien conoce un buen manual donde crear una bd en una variable (xk los controles ya como k son un pokito engorrosos para enviar correctamente inserts, selects y updates a mi gusto) yo vengo de php y mysql y bueno en php tengo mysql_query ,mysql_fetch_array ...,
pero aki en visual no encuentro la forma de pasar los datos a variables directamente... alguien me puede indicar un buen manual en español sobre el asunto? xk he buscado por la red y todos utilizan los controles data o se encuentran incompletos ...  seguire buscando pero si alguien dispone de información le estare muy agradecido...

gracias y disculpen las molestias
 

soplo

No has leído mucho la verdad

Declarar variables
Dim Cn as adodb.connection, Cmd as adodb.Command, Rec as adodb.Recordset
Dim Sql as string


Iniciar la conexión
set Cn=new adodb.connection
Cn.open la_string_de_conexión


Ejecutar un comando
sql="delete tabla where dato='" & valor & "'"
Cn.execute sql


Abrir un recordset
set rec=new adodb.recordset
rec.open string_de_recordsource,Cn,,adcmdtext


Acceder a un campo
p$=rec!dirección

Acceder a las propiedades de un campo
p$=rec.fields("nombre_campo").propiedad
donde propiedad puede ser 'name', 'type','value', ..., etc

Utilizar un objeto command
set Cmd=new adodb.command
cmd.commandtype=adcmdtext
cmd.activeconnection=cn
cmd.commandtext=sql
cmd.execute

El tipo puede ser desde una tabla a una sentencia sql pasando por un procedimiento almacenado.

Ejemplo de un comand que genera un recordset
dim Cn as adodb.connection, Cmd as adodb.command, Rec as adodb.Recordset

Set Cn=new adodb.connection
cn.open connectionstring, usuario, clave

set Cmd=new adodb.command
set Cmd=new adodb.command
cmd.commandtype=adcmdtext
cmd.activeconnection=cn
cmd.commandtext="select * from tabla order by nombre"
Rec=cmd.execute


Y esto en el modelo de datos ADO. El DAO es mas rápido y para cosas pequeñas mejor (especialmente con access). ADO es mas completo y para bases de datos sql.

RTFM
Callar es asentir ¡No te dejes llevar!

Hans el Topo

Cita de: soplo en 22 Junio 2006, 20:40 PM
No has leído mucho la verdad

Declarar variables
Dim Cn as adodb.connection, Cmd as adodb.Command, Rec as adodb.Recordset
Dim Sql as string


Iniciar la conexión
set Cn=new adodb.connection
Cn.open la_string_de_conexión


Ejecutar un comando
sql="delete tabla where dato='" & valor & "'"
Cn.execute sql


Abrir un recordset
set rec=new adodb.recordset
rec.open string_de_recordsource,Cn,,adcmdtext


Acceder a un campo
p$=rec!dirección

Acceder a las propiedades de un campo
p$=rec.fields("nombre_campo").propiedad
donde propiedad puede ser 'name', 'type','value', ..., etc

Utilizar un objeto command
set Cmd=new adodb.command
cmd.commandtype=adcmdtext
cmd.activeconnection=cn
cmd.commandtext=sql
cmd.execute

El tipo puede ser desde una tabla a una sentencia sql pasando por un procedimiento almacenado.

Ejemplo de un comand que genera un recordset
dim Cn as adodb.connection, Cmd as adodb.command, Rec as adodb.Recordset

Set Cn=new adodb.connection
cn.open connectionstring, usuario, clave

set Cmd=new adodb.command
set Cmd=new adodb.command
cmd.commandtype=adcmdtext
cmd.activeconnection=cn
cmd.commandtext="select * from tabla order by nombre"
Rec=cmd.execute


Y esto en el modelo de datos ADO. El DAO es mas rápido y para cosas pequeñas mejor (especialmente con access). ADO es mas completo y para bases de datos sql.

RTFM
todo bien explicadito!!
muchas gracias!!!
 

Hans el Topo

#3
que diferencia hay entre

Dim cn As New ADODB.Connection
Dim rec As New ADODB.Recordset

y el crear un puntero y generar el objeto luego?

Dim cn As ADODB.Connection     
Dim rec As ADODB.Recordset     
set Cn=new adodb.connection
set rec=new adodb.recordset
 

soplo

Pues nunca lo he puesto así pero te voy a dar mi opinión:

Cuando usas DIM lo que haces es declarar una variable de un tipo, crear un puntero a esa variable y reservar memoria correpondiente para ella

cuando usas NEW lo que haces es crear una nueva instancia de una clase ya declarada.

Así que no veo sentido a crear una nueva instancia de una clase que aún no has declarado si haces dim X as new ...

Que me corrija alguien si lo pienso mal, pero creo que con eso puedes conseguir un puntero que apunte a nothing o bien que sea equivalente a no haber puesto el new.

;D
Callar es asentir ¡No te dejes llevar!

Hans el Topo

Cita de: soplo en 23 Junio 2006, 18:20 PM
Pues nunca lo he puesto así pero te voy a dar mi opinión:

Cuando usas DIM lo que haces es declarar una variable de un tipo, crear un puntero a esa variable y reservar memoria correpondiente para ella

cuando usas NEW lo que haces es crear una nueva instancia de una clase ya declarada.

Así que no veo sentido a crear una nueva instancia de una clase que aún no has declarado si haces dim X as new ...

Que me corrija alguien si lo pienso mal, pero creo que con eso puedes conseguir un puntero que apunte a nothing o bien que sea equivalente a no haber puesto el new.

;D

creo k te la crea ya directamente ...  al menos eso nom e da error... xdxd

te queria preguntar acerca de cambiar el contenido del recordset ya que como vi en tus ejemplos para ejecutar una consulta si no entendí mal se coloca asi...
sql = "select modelo from almacenes order by modelo asc"
Cmd.CommandText = sql
rec = Cmd.Execute


pues me da error... uso no válido de la propiedad
 

Hans el Topo

Cita de: Hans el Topo en 23 Junio 2006, 18:32 PM
Cita de: soplo en 23 Junio 2006, 18:20 PM
Pues nunca lo he puesto así pero te voy a dar mi opinión:

Cuando usas DIM lo que haces es declarar una variable de un tipo, crear un puntero a esa variable y reservar memoria correpondiente para ella

cuando usas NEW lo que haces es crear una nueva instancia de una clase ya declarada.

Así que no veo sentido a crear una nueva instancia de una clase que aún no has declarado si haces dim X as new ...

Que me corrija alguien si lo pienso mal, pero creo que con eso puedes conseguir un puntero que apunte a nothing o bien que sea equivalente a no haber puesto el new.

;D

creo k te la crea ya directamente ...  al menos eso nom e da error... xdxd

te queria preguntar acerca de cambiar el contenido del recordset ya que como vi en tus ejemplos para ejecutar una consulta si no entendí mal se coloca asi...
sql = "select modelo from almacenes order by modelo asc"
Cmd.CommandText = sql
rec = Cmd.Execute


pues me da error... uso no válido de la propiedad


soy mas burro... xd
seria asi....
sql = "select modelo from almacenes order by modelo asc"
Cmd.CommandText = sql
set rec = Cmd.Execute