PDA

Ver la versión completa : visual basic



joputa
16-11-2002, 00:58
buenas me gustaria saber komo poder unir datos a un programa a traves de Text´s muchas gracias

Lazaro
17-11-2002, 22:33
No me queda claro a q te refieres exactamente. Si lo que quieres es guardar datos en una variable desde una textbox, la cosa sería algo así.

Una textbox (text1)
Un buttom (btn1)

defines una variable:


despues cuando le de el usuario al boton guardas el contenido de la caja de texto en var

Private Sub Command1_Click()
Dim var As String
var=text1.text
End Sub


No se, si lo q quieres hacer no es esto avisa.

PD: te recomiendo q busques por ahi un buen manual

joputa
17-11-2002, 23:22
mira te explico de nuevo lo ke kiero hacer eske en el primer post tenia prisa y no me explike muy bien
haber tengo 5 texts lo ke kiero es ke kuando tu pongas en un pepe y le des a buscar te bueke en una base de datos todos los pepes ke hay y si kieres meter datos y modificar los mismo pero kiero saber komo poder unirlos a traves de una base de datos o de excel
haber si esta vez me explike mejor gracias y gracias de nuevo ;) nos vemos si no te aclaras ya koncertamos para kedar en algun chat o algo nos vemos ;)

eXcalibur
18-11-2002, 10:40
Bueno, si ya has conetado
rsrecordset.open "SELECT * FROM MiTabla WHERE Nombre=" & Text1.text, Conexion, mododeapertura, bloqueo

o sencillamente, si ya tienes abierto el recordset,
rsrecrodset.find "Nombre=" & Text1.Text

Ok?

Lazaro
18-11-2002, 19:04
Así está mas claro lo que quieres hacer, pero veo q eXcalibur ya te ha contestado.

Una vez te has situado en el registro q quieres haciendo la búsqueda de uno de los 2 modos q te ha indicado eXcalibur (mejor el 1º), solo has de acceder a cada uno de los campos q quieras modificar con rsrecrodset.fields("nombre_del_campo")

Un saludo

joputa
19-11-2002, 00:27
veo ke kontrolas pero si me lo explicas mas detenidamente mejor para mi por ke no es ke sea korto eske llevo escasos meses en este mundillo si no te importa ponermelo mas claro gracias por vuestra colaboracion ;) un saludo desde valencia :D

Lazaro
19-11-2002, 19:37
Bueno... pues voy a intentar contestarte yo, y si meto la pata pues ya me corregirá eXcalibur u otro.


A ver... si quieres manejar bases de datos desde un progrma en VB, primero tienes q configurar la conexion a la Base de Datos. Despues, has de configurar además un RecordSet, q es el q actuará de "intermediario" (por decirlo de alguna manera) entre tu y la Base de Datos.

Para ello vamos a utilizar ADO, con lo q antes de nada tenbemos q agregar al proyecto la correspondiente librería. Para ello vete a proyecto, referenciaS, Y AHÍ ELIGES "Microsoft Activex dataobjects 2.0. library"

Ahora, a través de esta librería ya podemos manejar la Base de Datos. Primero te pongo el código y despues te lo comento:

Option Explicit
Dim conexion As New ADODB.Connection
Dim rst As New ADODB.Recordset

Private Sub Form_Load()

Dim abierto As Boolean
conexion.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);UID=admin;UserCommitSync=Yes;Threads=3;Saf eTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBuf ferSize=2048;FIL=MS Access;DriverId=25;DefaultDir=C:\WINDOWS\Escritori o;DBQ=C:\WINDOWS\Escritorio\bd1.mdb"
conexion.Open
rst.ActiveConnection = conexion
rst.Source = "datos"
rst.CursorType = adOpenKeyset
rst.LockType = adLockOptimistic
rst.Open
abierto = True

End Sub


como ves lo primero q hacemos es definir conexión y rst (la conexión q vamos a usar y el intermediario).

Cuando carga el formulario, le digo a conexión cual es la cadena de conbexión q va a utilizar ( es lo de conexion.connectionstring). Ahí lo q hago es pasarle todos los datos q necesita para realizar la conexión.
Despues abro la conexión, con conexion.open.
Posteriormente configuro el "intermediario" (el recordset), diciendole cual es la conexion activa q va a utilizar, la fuente (rst.source) o tabla de la q va a tomar los datos y la habro con rst.open (lo de cursor type y locktype lo dejo por el momento, ponlo asi).

Ahora es el momento de hacer lo q te comentaba excalibur:

rst.find "Nombre=" & Text1.Text


y así ya el rst se situa en el registro q contiene ese nombre. Ahora puedes acceder a cualquier otro campo con...

rst.fields("nombre_del_campo")

Y basicamente el tema es ese.

PD: no te olvides de cerrar el rst y la conexion cuando termines con ellos (por ejemplo cuando se descargue el formulario), con...

rst.close
conexion.close


PPD:bueno, espero haberte ayudado algo. byes

Lazaro
19-11-2002, 19:55
Esto... q me falto explicarte bien lo del connection string. ¿De donde saco todos estos datos?

Pues bien para ello, tienes q crear un archivo DSN (bueno si ya sabes hacerlo la explicación sobra, pero bueno... en todo caso siempre le valdrá a alguien).Pasos.

1. Inicio--> Panel de Control --> Origenes de datos ODBC

2. Ahí eliges DSN de archivo

3.Agregar --> Microsoft Acces Driver

4. Pones ubicación y nombre del archivo DSN q quieres crear

5. Guardar

6. Dale A Seleccionar, y seleccionas la Base de Datos Acces a la q quieres conectar



Pues bien ya has creado el DSN. Ahora lo abres con el block de notas, lo cortas y pegas en conexion.connectionstring="Y_AQUI_VA_TODO_EL_DSN"

Notaras q entre los DSNs q crees cambiarán el DEfaultDir, el DBQ (q muestran la ubicaion de la base de datos), pero también el driverID (esto creo q es debido al windows q estes utilizando, de tal forma q un DSN creado en Win 98 no te valdrá para XP y viceversa).


Pues bueno... como todo esto puede resultar un poco lioso, si no te aclaras te pongo el cçoidigo entero, aunque con lo de arriba casi estça.

eXcalibur
19-11-2002, 23:48
La explicación de Lazaro está bastante clara y es correcta.
Añadiré un par de cosas:

Lazaro te comenta que añadas la librería "Microsoft Activex dataobjects 2.0. library" . yo trabajo con la 2.6 que va mejor, pero con la 2.0, con lo que quieres hacer, tienes de sobra.
A la hora de declararlos objetos conection y recordset, Lazaro utiliza la clausula "New", que lo que hace es instanciar el objeto en su declaración. Es mas recomendable que se instancie despues, en el form load o donde se abra la conexión y el recordset.
Esto se hace de la siguiente forma: Declaramos los objetos

"Dim CnConexion as ADODB.Connection
Dim RsRecordset as ADODB.Recordset"

y cuando lo quieras abrir, o en el load, os instancias así:
"set CnConexion=new ADODB.Connection
set RsRecordset=new ADODB.RsRecordset"

Por Que esta tontería? Porque en programas grandes y con muchos accesos al servidor (en este caso no hay servidor), se puede perder la instancia del objeto (he de reconocer que a mi nunca me ha pasado, pero si Bill Gates lo dice....)

Otra cosa, si no quisieras montar un DSN, por la causa que sea, puedes crear una cadena de conexión con una ruta y nombre de la BD, o un nombre de server, como?
Añade un ADODTCONTROL al proyecto, y en sus propiedades, ve a connection string. Ahí te aparecerá un boton con tres puntos (el clásico que te abre otra ventana).
Aquí puedes generar la cadena de conexion por DSN, Ruta o Archivo.

Para acabar, comentar que si lo haces como lo dice Lazaro, te tiene que funcionar.
Saludos

Lazaro
20-11-2002, 19:19
"Por Que esta tontería? Porque en programas grandes y con muchos accesos al servidor (en este caso no hay servidor), se puede perder la instancia del objeto (he de reconocer que a mi nunca me ha pasado, pero si Bill Gates lo dice....)"

Pues mira por donde q intentando ayudar aprendo algo nuevo :D :D . La verdad, es q hasta ahora lo había hecho de ambas formas indistintamente.

joputa, en cuanto a lo del "ADODTCONTROL" q comenta eXcalibur, para poder usarlo tienes q agregarlo antes al proyecto. Para ello:

Proyecto-->Componentes--> "Microsoft ADO data control 6.0"

Lo digo para q sepas bien donde localizarlo si decides usarlo.

Bueno... un saludo a ambos.

joputa
20-11-2002, 23:25
bueno muchas gracias a todos por ayudarme pero me kedan por ahi kosas mu dificiles para la programacion llevo solo un par de meses pero le dedicare horas para poder hacerlo y sacar dentro de nada el programa al publico no sera una maravilla pero sera un reto para mi ;) os pondre en los colaboradores aunke kon la ayuda ke me estais dando os pondre komo casi creadores :D bueno un saludo y nos vemos si no entindo algo mas adelante os pondre mis super dudas para mi pero mierda de preguntas para vosotros ;)

eXcalibur
21-11-2002, 00:22
A ver si te sale bien

Lazaro
21-11-2002, 19:16
Se por propia experiencia q cuesta empezar (yo mismo estoy en ello), y q ésto de las conexiones a Bases de Datos puede parecer dificil (pero una vez q hagas la primera aplicación de este tipo verás q despues la cosa no cambia mucho y q es de gran utilidad)

cualquier duda no dudes en preguntar

Animo!

joputa
21-11-2002, 23:59
por favor me podeis explicar komo konfigurar el recorderset muchas gracias a todo por favor ponermelo facil = ke lo de la odcb esa :D muchas gracias a todos

Lazaro
22-11-2002, 19:38
Pues sí... pero ya está configurado en el ejemplo q te puse.

Te repito el código (léete el anterior post en el q te lo comento)

Option Explicit
Dim conexion As New ADODB.Connection
Dim rst As New ADODB.Recordset

Private Sub Form_Load()

Dim abierto As Boolean
conexion.ConnectionString = "DRIVER=Microsoft Access Driver (*. mdb);UID=admin;UserCommitSync=Yes;Threads=3;SafeTr
ansactions=0;PageTimeout=5;MaxScanRows=8;MaxBuffer
Size=2048;FIL=MS Access;DriverId=25;DefaultDir=C:\WINDOWS\Escritori
o;DBQ=C:\WINDOWS\Escritorio\bd1.mdb"
conexion.Open
rst.ActiveConnection = conexion
rst.Source = "datos"
rst.CursorType = adOpenKeyset
rst.LockType = adLockOptimistic
rst.Open
abierto = True

End Sub

Pues bien, lo q hago en este código es delcarar la conexión y el recordset (los nombre ponles los q te de la gana, yo uso "conexion" por claridad y "rst" por brevedad). Recuerda q para ello debes incluir en el proyecto la librería q te dijimos yo y eXcalibur.

Después en el evento form_load, lo único q hago precisamente es configurar la "conexion" y abrirla, y despues el "rst" (el recordset). Esto todo, está explicado en el anterior post, y aunque no soy un gran escritor, creo q está relativamente claro.

+ bien, lo q creo q tu no tienes claro q es, y lo q hacer con ese recordset, a partir de ahoraq "rst" (si no es eso dímelo). Pues bien... El rst "trabaja" para ti. Tu mandas, y él obedece:D . Para q veas lo q quiero decir, un pequeño ejemplo, y para ello, vamos agregar un buttom y 3 textbox a este proyecto.

Primero, recordemos q el rst, ya está abierto, y está "lleno" de registros sacados de la base de datos y la tabla correspondiente (seleccionada en el rst.source). Así, si es una tabla de clientes, tendrá a cada cliente, con los datos de los diferentes campos (nombre, Apellidos, direccion).

Pues bien, vamos a meter un nuevo cliente.

Private Sub Command1_Click()
'NOTA: el rst ya no lo abro, pq ya lo hice en el LOad (pero lógico sería abrirlo cuando estás a punto de usarlo, osea ahora)

rst.MoveFirst
rst.AddNew ' crea un nuevo registro de la tabla en el rst
rst.Fields("nombre") = Text1.Text 'lleno el primer campo en el rst
rst.Fields("apellidos") = Text2.Text 'el 2º
rst.Fields("direccion") = Text3.Text 'el 3º
rst.Update ' Con El UPDATE, el rst GRABA el nuevo registro EN LA TABLA
rst.Close ' Lo cierro (ya ha trabajado bastante por hoy xD)
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""

End Sub


Pues ya está, abre la base de datos y verás q ya está el nuevo cliente.

Ahora, te toca a ti ( algo tendrás q hacer ¿no? ;) ), enterarte de todo lo demás q puede hacer nuestro amigo recordset por nosotros .

Ahora no te valen quejas, ya q tienes un mini-programa enterito q te tiene q funcionar (eso si, cambniando el connecion string como te he explicado anteriormente).

Venga, te toca trabajar. Byes.

joputa
22-11-2002, 21:24
bueno pos ya esta todo lo ke keria saber lo demas lo se casi todo un saludo ;)

Lazaro
22-11-2002, 22:10
ok.

Pues suerte... de todas formas, si algo no te sale (despues de haberlo intentado claro), no dudes en preguntar.

joputa
22-11-2002, 23:47
ok gracias

Ban
16-06-2005, 21:14
Mira me podrian ayudar

como puedo hacer la conexion de VB a Access con odbc

me pueden pasar el codigo

Ban
16-06-2005, 21:21
Mira me podrian ayudar

como puedo hacer la conexion de VB a Access con odbc

me pueden pasar el codigo


gracias......


Salu2...

eXcalibur
17-06-2005, 09:56
Ban, ¿has visto las fechas de este post?, tienen más de 2 años, no abras temas tan antiguos.
busca en www.lawebdelprogramador.com, ahí tienes muchísimo código sobre conectividad con VB y Access