Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

sql server y vb

Estas en el tema de sql server y vb en el foro de Visual Basic clásico en Foros del Web. Wenas.... Cómo conectar una aplicación hecha en VB 6.0 con una bbdd en ms sql server??? Gracias....un saludo...
  #1 (permalink)  
Antiguo 26/05/2005, 15:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 23
Antigüedad: 19 años, 3 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 26/05/2005, 15:19
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
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
  #3 (permalink)  
Antiguo 26/05/2005, 16:03
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Esas cosas deberían buscarse en las FAQs, son muuuy generales.

Por cierto, veo que has usado "Hola" y no "Eje" Developer9, felicidades ;)
  #4 (permalink)  
Antiguo 26/05/2005, 16:16
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
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??
  #5 (permalink)  
Antiguo 27/05/2005, 03:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 23
Antigüedad: 19 años, 3 meses
Puntos: 0
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.....
  #6 (permalink)  
Antiguo 30/05/2005, 09:13
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
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
  #7 (permalink)  
Antiguo 30/05/2005, 09:26
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 109
Antigüedad: 20 años, 5 meses
Puntos: 0
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/05/2005 a las 10:19
  #8 (permalink)  
Antiguo 30/05/2005, 09:52
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por sdemingo
Para crear un dsn....en tiempo de ejecución....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:31.