Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 26-may-2005, 15:07   #1 (permalink)
diolsinai está en el buen camino
 
Fecha de Ingreso: febrero-2005
Mensajes: 23
sql server y vb

Wenas....

Cómo conectar una aplicación hecha en VB 6.0 con una bbdd en ms sql server???

Gracias....un saludo
diolsinai está desconectado   Responder Citando
Antiguo 26-may-2005, 15:19   #2 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Hola que tal... hay algunas formas, con ADO te puedes conectar creando un dsn que apunte a tu base de SQL Server... y aqui te envio el codigo para acceder a la base:

Cita:
Global conexion As ADODB.Connection
Global registro As ADODB.Recordset
Global cadena As String
Global nombredsn As String

Public Sub abre_conexion()
On Error GoTo Y:
Set conexion = New ADODB.Connection
conexion.Open nombredsn
Y:
If Err.Number <> 0 Then
MsgBox "Error de conexion", vbCritical
End
End If
End Sub

Public Sub cierra_conexion()
On Error GoTo Y:
conexion.Close
Set conexion = Nothing
Y:
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Error al cerrar conexion con la base de datos"
End
End If
End Sub

Public Sub Abre_registro()
On Error GoTo Y:
Set registro = New ADODB.Recordset
registro.ActiveConnection = conexion
Y:
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Error al abrir un set de Registros"
End
End If
End Sub

Public Sub cierra_registro()
On Error GoTo Y:
registro.Close
Set registro = Nothing
Y:
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Error al cerrar un set de Registros"
End
End If
End Sub
nombredsn debe contener en nombre del dsn que creaste. Asi cuando quieras abrir una conexion solo llamas a la funcion abre_conexion y puedes realizar update, insert, delete... si necesitas hacer select despues de llamar a abre_conexion llamas a abre_registro para crear un recordset con la conexion previamente abierta. No te olvides al final de cada funcion en la que abras conexiones y recordset a la base, cerrarlos.

Cualquier cosas preguntas
Developer9 está desconectado   Responder Citando
Antiguo 26-may-2005, 16:03   #3 (permalink)
MaxExtreme ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Esas cosas deberían buscarse en las FAQs, son muuuy generales.

Por cierto, veo que has usado "Hola" y no "Eje" Developer9, felicidades ;)
MaxExtreme está desconectado   Responder Citando
Antiguo 26-may-2005, 16:16   #4 (permalink)
xcars sólo puede mejorar
 
Avatar de xcars
 
Fecha de Ingreso: mayo-2005
Mensajes: 570
para conectar una bd de datos a SQL,
para no complicarte con tanto codigo para conectarte, para probar y que entendas te recomiendo que hagas una conexion odbc, en conexion de sistema y que este odbc apunte a tu base de datos.
Luego en basic creas un Data Environment que esta dando clic derecho sobre la lista de tus formularios le das agregar y luego DataEnvironment, ya estando ahi asignale un nombre corto, como DE o DE1 por ejemplo, luego de esto, creale una conexion, simplemente dando un clic derecho a DE1 y eliges agregar conexion, a la conexin tambien agregale un nombre corto como CN o CN1, a esta conexion la configuras a que apunte al odbc que creamos anteriormente.
este es un ejemplo de como hacerlo editar

Código:
Dim l As Long
Dim t As Variant
Dim cm As ADODB.Command
Dim i As Long
On Error GoTo merror
If vacio(toperadora_id) Then
    alerta "Debe definir un Id..."
    toperadora_id.SetFocus
    Exit Sub
End If
Call setinsercion
Call inicializar

Set cm = DE1.Commands("dbo_soperadoras")
cm.Parameters(1) = toperadora_id
cm.Parameters(2) = "" 'toperadora_nombre
cm.Parameters(3) = "" 'cuenta
cm.Execute
If cm.Parameters(0) = 0 Then
   MsgBox "No existe", vbExclamation
   Call resetbotton
   toperadora_id.Enabled = True
   toperadora_id.SetFocus
   Exit Sub
End If
toperadora_nombre = cm.Parameters(2)
toperadora_cuenta_smsstudio = ALLTrim(cm.Parameters(3))
Call encender



toperadora_nombre.SetFocus
Exit Sub
abortar:
Call resetbotton
toperadora_id.SetFocus
Exit Sub

merror:
Dim er As ADODB.Error
Dim msg As String
msg = Err.Description
For Each er In DE1.Cn1.Errors
   msg = msg & er.Description & ": " & er.Number & vbCr
Next er
MsgBox msg, vbExclamation
Resume abortar
donde dbo_soperadoras es un procedimiento almacenado en tu base de datos.

PERDON, ANTES DE CONTINUAR, QUE DESEAS HACER CON LA CONEXION, ya que el codigo que te dijo Developer y mi metodo son totalmente para lo mismo, pero la conexion es un primer paso, que deseas hacer para tratar de seguir ayudando??
xcars está desconectado   Responder Citando
Antiguo 27-may-2005, 03:53   #5 (permalink)
diolsinai está en el buen camino
 
Fecha de Ingreso: febrero-2005
Mensajes: 23
Gracias por las repuestas.
Estoy haciendo una aplicación típica de gestión, pues formularios para el mantenimiento de datos de unos trabajadores. Y siempre lo he hecho con una bbdd en access, pero ahora hay q hacerlo con una bbdd de sql server. No se puede hacer también en tiempo de diseño como lo hacía en access ??

saludos.....
diolsinai está desconectado   Responder Citando
Antiguo 30-may-2005, 09:13   #6 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Eje!!! bueno yo no he manejado la forma en que lo hace xcars... por lo que veo la unica diferencia es en el codigo, ya que de igual se necesita crear un dsn que apunte a una base de SQL Server, bueno para conectarse a access yo lo hago de la misma forma, solo que al crear el dsn lo creo utilizando el driver odbc de access y no el de SQL Server.

Es mas... en algunas ocasiones he tenido la misma base de datos en access y en SQL Server y puedo utilizar las dos facilmente, en el codigo que yo puse solo cambio el contenido de la variable nombredsn y asi apunto a un origen de datos diferente, independiente si este origen de datos sea de access o de SQLS
Developer9 está desconectado   Responder Citando
Antiguo 30-may-2005, 09:26   #7 (permalink)
sdemingo está en el buen camino
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 109
Enviar un mensaje por ICQ a sdemingo Enviar un mensaje por AIM a sdemingo Enviar un mensaje por MSN a sdemingo Enviar un mensaje por Yahoo  a sdemingo
Para crear un dsn....en tiempo de ejecución....
Código:
'API PARA CREAR DSN DE SISTEMA
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Long, ByVal fRequest As Long, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
Private Const ODBC_ADD_SYS_DSN As Long = 4         ' Se creará un DSN de sistema
Private Const vbAPINull As Long = 0&                         ' Puntero NULL

Sub crearDSN()
    Dim dl As Long                                 ' Valor devuelto por la función API
    Dim sAttributes As String                  ' Aributos
    Dim sDriver As String                       ' Nombre del controlador
    Dim sDescription As String                ' Descripción del DSN
    Dim sDsnName As String                  ' Nombre del DSN
    
On Error GoTo errorDSN
    
    ' Establecemos los atributos necesarios
    sDsnName = "usuarios"
    sDescription = "DSN de sistema para controlar los permisos de los usuarios"
    sDriver = "MySQL ODBC 3.51 Driver"
    
    ' Los pares de cadenas acabarán en valor Null
    sAttributes = "DSN=" & sDsnName & Chr(0)
    sAttributes = sAttributes & "Server=localhost" & Chr$(0)
    sAttributes = sAttributes & "User=root" & Chr$(0)
    sAttributes = sAttributes & "Description=" & sDescription & Chr(0)
    sAttributes = sAttributes & "Database=mysql" & Chr(0)
    
    ' Si deseamos utilizar la autenticación de Windows NT, deberemos de
    ' especificarlo en la cadena de atributos
    sAttributes = sAttributes & "Trusted_Connection=True" & Chr(0)
    
    ' Creamos el nuevo origen de datos de usuario especificado.
    ' Si deseamos que aparezca el cuadro de diálogo, tendremos que
    ' especificar la propiedad «hWnd» del formulario donde se realiza
    ' la llamada a la función API.
    dl = SQLConfigDataSource(vbAPINull, ODBC_ADD_SYS_DSN, sDriver, sAttributes)
    
    If dl Then
        'Se ha creado bien
    Else
        MsgBox "Ha ocurrido un error mientras se creaba el DSN de Sistema para MySQL. Posiblemente necesite tener permisos de Aministrador en su máquina." & vbCrLf & "Consulte con el Aministrador de su equipo", vbCritical, "Error"
        End
    End If
    
    Exit Sub
    
'ERROR
errorDSN:
    MsgBox "Ha ocurrido un error mientras se creaba el DSN de Sistema para MySQL. Posiblemente necesite tener permisos de Aministrador en su máquina." & vbCrLf & "Consulte con el Aministrador de su equipo", vbCritical, "Error"
    End
End Sub
el ejemplo es para MySQL. Tendrás que cambiar el control ODBC por el de SQL Server y los nombres de la base de datos, usuario, etc...

salu2

pd. En tiempo de diseño también se puede, igual que con Access, pero en lugar del motor Microsoft Jet... tendrás que utilizar el de SQL Server.
__________________
Lo importante no es saber, sino tener el teléfono del que sabe :risa:

Última edición por sdemingo; 30-may-2005 a las 10:19.
sdemingo está desconectado   Responder Citando
Antiguo 30-may-2005, 09:52   #8 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Cita:
Iniciado por sdemingo
Para crear un dsn....en tiempo de ejecución....
Developer9 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 22:56.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93