Buscar

conectar sql con visual basic


 
 Old 19 nov 2006, 01:54   #1 (permalink)  
Miembro activo
 
Avatar de VickMTs
 
Registrado: septiembre 2004
Ubicación: Mexico
Mensajes: 173

Predeterminado conectar sql con visual basic

holas

wenas practicamente soy nuevo en sql pero me piden un sw que tenga una base de datos de sql en visual basic me podrian ayudar ya he tratado de buscar como se hace pero solo tengo este codigo por todos lados

************************************************** *******

Es curioso, pero de todos los ejemplos que tengo sobre acceso a bases de datos, (usando VB6 y anteriores), no tenía ninguno que usase una base de datos de SQL Server, todos los ejemplos eran de bases de Access.
Pero más vale tarde que nunca, ¿verdad?

Pues aquí tienes un ejemplo para acceder a una base de datos de SQL Server, abrir una tabla y, para que el ejemplo no sea demasiado corto, mostraremos en un combo todos los campos (columnas) de dicha tabla.

Seguramente en otras ocasiones pondré ejemplos más completos que usen bases de datos de SQL Server, aunque, si te fijas, lo único que diferencia el uso de este tipo de bases de datos y las de Access es la forma de conectarse al "proveedor" de la base de datos.

Para este ejemplo, tendremos un formulario en el que colocaremos un botón llamado cmdAbrir y un ComboBox llamado cboCampos.

También necesitaremos una referencia a: Microsoft ActiveX Data Objects 2.0 Library o cualquier versión superior que tengas.

En la parte general de declaraciones tendremos definidas dos variables, una de un objeto Connection y otra de un objeto Recordset.

En el evento del botón cmdAbrir haremos todo el proceso de conectar a la base de datos, cargar el recordset con la tabla que queramos acceder y mostraremos los campos de dicha tabla en el combo.

Aquí tienes el código completo.

Nota:
He resaltado en negrita y en rojo los sitios en los que deberías indicar tus propios datos, es decir, el Data Source (fuente de datos), la base de datos (Initial Catalog) y la tabla a abrir.

En este ejemplo, el Data Source usado en el ejemplo, es el que instala el SDK de .NET Framework.



'------------------------------------------------------------------------------
' Conectar a una base de datos de SQL Server (08/Sep/04)
' y mostrar los campos de la tabla
'
' Para que este ejemplo funcione, necesitamos una referencia a:
' Microsoft ActiveX Data Objects 2.0 Library (o superior)
'
' ©Guillermo 'guille' Som, 2004
'------------------------------------------------------------------------------
Option Explicit

Private cnn As ADODB.Connection
Private rst As ADODB.Recordset

Private Sub cmdAbrir_Click()
Dim tField As ADODB.Field
'
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=pubs; " & _
"Data Source=(local)\NETSDK; " & _
"integrated security=SSPI; persist security info=True;"
'
' abrir el recordset indicando la tabla a la que queremos acceder
rst.Open "SELECT * FROM authors", cnn, adOpenDynamic, adLockOptimistic
'
' Asignar los nombres de los campos al combo
With cboCampos
.Clear
For Each tField In rst.Fields
.AddItem tField.Name
Next
.ListIndex = 0
End With
'
' Cerrar el recordset y la conexión
rst.Close
cnn.Close
'
End Sub

************************************************** **********



si me pueden ayudar a expliarme como funciona este codigo o me pueden decir paso a paso lo que tengo que hacer porfavor se los agradeceria bastante

salu2

Saludos...

DEJAR DE LUCHAR.......... ES COMENZAR A MORIR
VickMTs is offline   Citar y responder
 
 Old 19 nov 2006, 18:07   #2 (permalink)  
Moderador
 
Avatar de the_ma3x
 
Registrado: febrero 2005
Ubicación: México
Mensajes: 4.325

Predeterminado Re: conectar sql con visual basic

Cita:
ciber_victor3 escribió:
holas

wenas practicamente soy nuevo en sql pero me piden un sw que tenga una base de datos de sql en visual basic me podrian ayudar ya he tratado de buscar como se hace pero solo tengo este codigo por todos lados
OK, ciber_victor, este ejemplo que pones es de como conectarte a SQL Server utilizando el metodo ADO. Este varia muy poco del metodo al que estabas acostumbrado DAO (que es el que generalmente se ocupa para conectarnos con Access).

Ahora bien, te explico el siguiente ejemplo (mis comentarios van en negrita y azul:

Option Explicit
'Sobra decir que estas declaraciones son las variables
'Para declararlas tienes que agregar en las referencias del Proyecto
'Microsoft ActiveX Data Objects 2.X Library (La X es por la versión, van en la 2.8 pero puedes usar la 2.1, 2.3 o la que tengas instalada.

Private cnn As ADODB.Connection
Private rst As ADODB.Recordset

Private Sub cmdAbrir_Click()[b]
'Esta declaración crea una variable de la colección Field (Campo de la tabla)
Dim tField As ADODB.Field
'
' Cierra las conexiones por si ya estan abiertas, de lo contrario manda error
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos pero los crea como nuevos.
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
'Esta centencia abre la conexión usando la autentificación de windows
'Lo cual no es muy recomendable, es preferible crear usuarios en SQL

cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=pubs; " & _
"Data Source=(local)\NETSDK; " & _
"integrated security=SSPI; persist security info=True;"
'
' abrir el recordset indicando la tabla a la que queremos acceder en este caso
' la tabla Authors de forma dinámica y con un bloqueo Optimista
'Es muy importante saber como abrir la tabla, para así evitar
'Problemas de memoria o de acceso en entornos multiusuario.
rst.Open "SELECT * FROM authors", cnn, adOpenDynamic, adLockOptimistic
'
' Estas sentencias hacen un ciclo para obtener el nombre de todos los campos
' que ha devuelto el recordset que hemos abierto. También se pueden
'obtener sin necesidad de la colección Field. Con un rst.fields(X).name en donde la X la sustituimos por el
'numero del campo empezando desde 0

With cboCampos
.Clear
For Each tField In rst.Fields
.AddItem tField.Name
Next
.ListIndex = 0
End With
'
' Cerrar el recordset y la conexión
rst.Close
cnn.Close
'
End Sub

Practicamente las opciones son las mismas que con DAO y Access

Otra forma para conectarte a SQL server con un usuario en especifico seria:

cnn.Open "Driver={SQL Server};Server=MYSERVER;Database=MIBASE;Uid=myUsername;P wd=myPassword;"

De ahí en fuera no se en que más pueda ayudarte, pero espero que esto te sirviera.

Saludines

Every wall is a door. Ralph Waldo Emerson
the_ma3x is offline   Citar y responder
 
 Old 20 nov 2006, 04:39   #3 (permalink)  
Miembro activo
 
Avatar de VickMTs
 
Registrado: septiembre 2004
Ubicación: Mexico
Mensajes: 173

Predeterminado Re: conectar sql con visual basic

upsss creo entender tus comentarios pero el problema ahora es ....

decia que tengo que poner un combobox y un command pero lo que no entiendo es como jalarla ok la tabla de segun authors ahi pongo el nombre de la tabla pero el nombre de la DB dondo lo abhro o que se hace si me pudieras ayudar te lo agradeceria bastante muchas gracias.... salu2

Saludos...

DEJAR DE LUCHAR.......... ES COMENZAR A MORIR
VickMTs is offline   Citar y responder
 
 Old 20 nov 2006, 04:56   #4 (permalink)  
Moderador
 
Avatar de the_ma3x
 
Registrado: febrero 2005
Ubicación: México
Mensajes: 4.325

Predeterminado Re: conectar sql con visual basic

Bien, el servidor, base de datos, usuario y password los pones en esta sentencia:

cnn.Open "Driver={SQL Server};Server=SERVIDOR;Database=BASEDATOS;Uid=USERNAMEname;Pwd=PASSWORD;"

Estan en negrita para que los identifiques mejor.

Para llenar un combo con el contenido de una tabla, lo puedes hacer de esta forma:

'Declaraciones Generales (Al principio del FORM)
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

'Luego en el evento de un botón si gustas, haces esto:

'Un par de variables que usaremos:
Dim sSQL As String
'Limpiamos el combo
combo1.Clear

cnn.Open "Driver={SQL Server};Server=SERVIDOR;Database=BASEDATOS;Uid=USERNAMEname;Pwd=PASSWORD;"

sSQL = "SELECT CAMPO FROM TABLA"
rst.Open sSQL, cnn

Do While Not rst.Eof
combo1.Add rst![CAMPO]
rst.MoveNext
Loop

'Cerramos todo.
rst.Close
cnn.Close
'Liberamos memoria
Set rst = Nothing
Set cnn = Nothing

Y listo.

Lo ideal si es que vas a estar usando mucho la conexión a tu servidor, es crear una función, abrirla al iniciar tu programa y cerrarla al salir.

Saludines

Every wall is a door. Ralph Waldo Emerson
the_ma3x is offline   Citar y responder
 
 Old 20 nov 2006, 22:45   #5 (permalink)  
Miembro activo
 
Avatar de VickMTs
 
Registrado: septiembre 2004
Ubicación: Mexico
Mensajes: 173

Predeterminado Re: conectar sql con visual basic

ok.... muchisimas gracias....

Editado por ciber_victor3 en 21 nov 2006 a las 02:02.

Saludos...

DEJAR DE LUCHAR.......... ES COMENZAR A MORIR
VickMTs is offline   Citar y responder
 
 Old 21 nov 2006, 02:00   #6 (permalink)  
Miembro activo
 
Avatar de VickMTs
 
Registrado: septiembre 2004
Ubicación: Mexico
Mensajes: 173

Predeterminado Re: conectar sql con visual basic

una pregunta the_ma3x ya que me conecta ahora solo los campos de la tabla que pongo en el codigo

----------------------------------------------------------------------
sSQL = "SELECT * FROM Clientes"
rst.Open sSQL, cnn
----------------------------------------------------------------------

me aparecen en el combo1 todos, pero mi duda es como hacer que la informacion de los campos se pueda visualizar, tal es el ejemplo del ADOC que se visualizan en un text como puedo hacer que al seleccionar un campo desde el combo1 aparezcan en un text si me pudieras ayudar te lo agradeceria...

ha otro punto nose si asi tu manejes ese codigo o no se pero si sirve de algo el codigo que me explicaste lo entendi a la perfeccion y le hice algunos ajustes haber si esta bien checalo a mi si me conecta de todas formas es este...

---------------------------------------------------------------------

Private Sub cmdAbrir_Click()

'Un par de variables que usaremos:
Dim sSQL As String
'Limpiamos el combo
CBOCAMPOS.Clear

cnn.Open "Driver={SQL Server};Server=TOSHIBA-VICTOR;Database=IM" ';Uid=USERNAMEname;Pwd=PASSWORD;"esta parte se la quite xq no tengo pssw ni us

sSQL = "SELECT * FROM Clientes"
rst.Open sSQL, cnn


With CBOCAMPOS
.Clear
For Each tField In rst.Fields
.AddItem tField.Name
Next
.ListIndex = 0
End With
--> esto se lo cambie por lo de abajop que tu me habias explicado


'Do While Not rst.EOF
'CBOCAMPOS.AddItem rst![CAMPO]
'rst.MoveNext
'Loop

'Cerramos todo.
rst.Close
cnn.Close
'Liberamos memoria
Set rst = Nothing
Set cnn = Nothing

End Sub

no se si sirva de algo pero de todos modos te queria comentar

gracias por todo espero y me sigas ayudando en algunas otras dudas que pueda tener de antemano gracias

saluditos

Saludos...

DEJAR DE LUCHAR.......... ES COMENZAR A MORIR
VickMTs is offline   Citar y responder
 
 Old 23 ago 2008, 12:50   #7 (permalink)  
Miembro Activo
 
Avatar de danielsan
 
Registrado: marzo 2006
Mensajes: 1

Predeterminado Re: conectar sql con visual basic

hola, sabes porqué con este codigo (que me funciona). si hago un rst.recordcount siempre me da -1 ?? HE aplicado filtros, sin filtros, y siempre me da -1.

Muchas gracias,


xvai
danielsan is offline   Citar y responder
 
 Old 24 ago 2008, 02:44   #8 (permalink)  
Moderador
 
Avatar de the_ma3x
 
Registrado: febrero 2005
Ubicación: México
Mensajes: 4.325

Predeterminado Re: conectar sql con visual basic

Hola, el tema es un poquito viejo, es de hace 2 años...

El -1 se puede dar por 2 factores. El recordset devolvio ningún registro o esta cerrado. O se puede deber a la forma en como esta abierto el recordset.

O un método menos adecuado, pero muy efectivo es hacer un rs.movelast y leer cuantos registros tiene.

Saludos

Every wall is a door. Ralph Waldo Emerson
the_ma3x is offline   Citar y responder

« diferencias horarias en PHP | Access 2003 y Visual Basic 2005 Net... »

Herramientas
Estilo


 

Tema Iniciado por Foro Respuestas Último mensaje
Buscando Plug-in del Visual Basic 6 levosero Programación 2 24 oct 2010 03:36
Visual Basic .NET ruben_softonic Programación 3 02 feb 2010 23:56
numeros aleatorios en visual basic 6.0 wpersei Programación 1 13 sep 2006 03:10
Cómo hace en Visual Basic 6.0 un msn de alerta ignacio.navarro Programación 4 24 jun 2005 01:36
Guia Visual Basic Access MALEFICIO Programación 4 28 abr 2005 19:44



Buscar