Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   sql server y vb (http://www.forosdelweb.com/f69/sql-server-vb-302117/)

diolsinai 26/05/2005 15:07

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 :-D

Developer9 26/05/2005 15:19

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 :si: :arriba:

MaxExtreme 26/05/2005 16:03

Esas cosas deberían buscarse en las FAQs, son muuuy generales.

Por cierto, veo que has usado "Hola" y no "Eje" Developer9, felicidades ;)

xcars 26/05/2005 16:16

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??

diolsinai 27/05/2005 03:53

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..... :-D

Developer9 30/05/2005 09:13

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 :arriba:

sdemingo 30/05/2005 09:26

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.

Developer9 30/05/2005 09:52

Cita:

Iniciado por sdemingo
Para crear un dsn....en tiempo de ejecución....

:arriba: :-)


La zona horaria es GMT -6. Ahora son las 15:17.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.