Programación General > Visual Basic para principiantes
como puedo hacer la conexion de vb kon el sql en modulo ?
(1/1)
marcela1513:
wuenas como podria hacer la conexion de vb kon el sql en modulo y modulo de clases?para que aparesca en grilla los datos de sql
y k tipo de codigo es mas efectiva sin problemas saludos
F_Tanori:
Tengo una pregunta para ti.
Sabes usar visual basic?
Algunas palabras para buscar en internet
DAO
RDO
ADO
ConnectionStrings
DSN
Connection
RecordSet
ODBC
OLE DB
Pensaras que solo te estamos fastidiando, pero tus preguntas se leen con cierto sentido de "haganme las cosas", "pongan un codigo listo para copiar y pegar", si nos dijeran en que tienes problemas pudieramos ayudarte.
Pero si no sabes visual basic y/o SQL entonces no necesitas un foro, necesitas un manual/curso primero tomalo practica y tus dudas exponlas en un foro, nadie te negara la ayuda.
--- Citar ---como puedo hacer la conexion de vb kon el sql en modulo ?
wuenas como podria hacer la conexion de vb kon el sql en modulo y modulo de clases?para que aparesca en grilla los datos de sql
y k tipo de codigo es mas efectiva sin problemas saludos
--- Fin de la cita ---
que tipo de respuesta se le puede dar a esa pregunta? :o
en fin...
lee la pagina que te he dicho
Saludos
marcela1513:
bueno disculpa lo k dije en la pregunta k codigo serviria para la conexion en el modulo no keria decir "k hagan las cosas" y "de copiar y pegar"solo me referia a codigos sin erroneo y si se visual basic no lo preguntaria en el tema,por lo que habia hay muxos kodigos de conexion solo eso...
marcela1513:
--- Cita de: "marcela1513" ---bueno disculpa lo k dije en la pregunta k codigo serviria para la conexion en el modulo no keria decir "k hagan las cosas" y "de copiar y pegar"solo me referia a codigos sin erroneo y si se visual basic no lo preguntaria en el tema,por lo que habia hay muxos kodigos de conexion solo eso...
--- Fin de la cita ---
mira tengo ese codigo k no se si serviria muxo pero no si plantearlo en el modulo
Option Explicit
' ----------------------------------------------------------------------------------------------
' \ -- Descripción : Ejemplo simple para eliminar un registro solo o un rango de filas seleccionado
' ----------------------------------------------------------------------------------------------
' ----------------------------------------------------------------------------------------------
' -- Declaraciones
Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long
Private Declare Sub InitCommonControls Lib "Comctl32" ()
Dim cn As ADODB.Connection
Dim Rs As ADODB.Recordset
' -----------------------------------------------------------------------------------------
' \ -- Función para cargar la tabla en la grilla y otras opciones
' -----------------------------------------------------------------------------------------
Private Sub pv_Flexgrid_Initialize(MSHFlex As MSHFlexGrid, cn As ADODB.Connection)
' -- Declarar y crear el recordset
Set Rs = New ADODB.Recordset
' -- Ejecutar el command SQL de la tabla productos
With Rs
.CursorLocation = adUseClient
' -- Ejecutar comando SQL
.Open "SELECT [IDProducto],[NombreProducto],[UnidadesEnExistencia],[PrecioUnidad] From Productos Order by [IdProducto]", cn, adOpenStatic, adLockOptimistic
End With
With MSHFlex
.AllowUserResizing = flexResizeColumns
.FixedCols = 0
.FixedRows = 1
.ForeColorFixed = vbHighlight
.BackColorFixed = vbWhite
.GridLinesFixed = flexGridDots
.RowHeight(0) = 450
.GridColor = RGB(190, 190, 190)
.SelectionMode = flexSelectionByRow
Set .DataSource = Rs
Dim i As Integer
For i = 0 To .Cols - 1
.ColWidth(i) = 1700
Next
.Refresh
End With
End Sub
' -----------------------------------------------------------------------------------------
' \ -- Sub para ejecutar la consulta de eliminación
' -----------------------------------------------------------------------------------------
Private Sub ExecuteQuery(cn As ADODB.Connection, sQuery As String)
On Error GoTo Error_Handler
' -- Llamar al método Execute para Eliminar el registro
cn.Execute sQuery
Exit Sub
Error_Handler:
MsgBox Err.Description, vbCritical
End Sub
' -----------------------------------------------------------------------------------------
' \ -- Botón para eliminar el registro
' -----------------------------------------------------------------------------------------
Private Sub Command1_Click()
On Error GoTo Error_Handler
Dim sQuery As String
With MSHFlexGrid1
' -- Comprobar que hay una fila activa
If .Row <= 0 Then
MsgBox " No hay ninguna fila seleccionada para eliminar ", vbExclamation
Exit Sub
End If
' -- Mostrar en un mensaje la cantidad de filas a eliminar
If MsgBox("Se van a eliminar " & CStr(Abs(.Row - .RowSel) + 1) & " registros ... ¿ Continuar?", vbQuestion + vbYesNo) = vbNo Then
Exit Sub
End If
' -- Obtener valores del rango seleccionado
Dim i As Long
Dim j As Long
Dim k As Long
If .Row < .RowSel Then i = .Row: j = .RowSel
If .Row > .RowSel Then j = .Row: i = .RowSel
If .Row = .RowSel Then i = .Row: j = .Row
' -- Recorrer en un bucle el rango de selección
For k = i To j
.Row = k
sQuery = "DELETE * FROM [Productos] WHERE [IdProducto] = " & CLng(.TextMatrix(.Row, 0))
Call ExecuteQuery(cn, sQuery)
Next
' -- Deshabilitar el redraw para el MSHFlexGrid
.Redraw = False
' -- Cargar nuevamente el Grid para actualizar los datos
Set .DataSource = Nothing
' -- Ejecutar el método Requery para volver a cargar el recordset actualizado
Rs.Requery
' -- Enlazar el conjunto de datos con el Grid
Set .DataSource = Rs
' -- Volver a habilitar el repintado del control Flex
.Redraw = True
End With
' -- Errores
Exit Sub
Error_Handler:
MsgBox Err.Description, vbCritical
End Sub
' --------------------------------------------------------------------------------------------
' \ -- Inicio
' --------------------------------------------------------------------------------------------
Private Sub Form_Load()
' -- ruta de la base de datos
Dim path_bd As String
path_bd = App.Path & "datadb1.mdb"
With MSHFlexGrid1
' --Crear una Nueva conexión
Set cn = New ADODB.Connection
' -- Abre la bd pasando de la cadena de conexión OLEDB
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path_bd & ";Persist Security Info=False"
Call pv_Flexgrid_Initialize(MSHFlexGrid1, cn)
End With
End Sub
' --------------------------------------------------------------------------------------------
' \ -- Fin -- Descargar
' --------------------------------------------------------------------------------------------
Private Sub Form_Unload(Cancel As Integer)
If Not Rs Is Nothing Then
If Rs.State = adStateOpen Then Rs.Close
Set Rs = Nothing
End If
Call pvCloseDataBase
End Sub
' --------------------------------------------------------------------------------------------
' \ -- Iniciar InitCommonControls
' --------------------------------------------------------------------------------------------
Private Sub Form_Initialize()
Call SetErrorMode(2)
Call InitCommonControls
End Sub
' --------------------------------------------------------------------------------------------
' \ -- Cerrar conexión
' --------------------------------------------------------------------------------------------
Private Sub pvCloseDataBase()
If Not cn Is Nothing Then
If cn.State = adStateOpen Then cn.Close
Set cn = Nothing
End If
End Sub
F_Tanori:
Pues ese codigo parece funcionar
si quieres implementarlo en un modulo estandar, aqui una forma sencilla, sin muchas validaciones, necesitarias estudiarlo y perfeccionarlo para que lo apliques a lo tuyo
--- Código: Visual Basic --- function ConectarDB(ByRef Cnn as Connection) As booleanon error goto zError Cnn.Open "DSN='BaseSQL'" ConectarDB = Cnn.State =1 zError: if Err.Number>0 then MsgBox(Err.Description) Err.Clear ConectarDB = false end ifend function
--- Código: Visual Basic --- function Consulta(ByRef Cnn as Connection,SQL as string) as RecordSet Set Consulta = Cnn.Execute (SQL)end if
Uso:
--- Código: Visual Basic ---Dim oConnexion as ConnectionDim oRS as RecordSet if ConectarDB(oConnexion) then set oRS = Consulta(oConnexion,"SELECT * FROM PRODUCTOS")end if
(NOTA: no lo compile asi que tendras que probarlos )
Saludos
Navegación
Ir a la versión completa