Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/09/2011, 09:08
Daviel
 
Fecha de Ingreso: octubre-2008
Mensajes: 44
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Alta en db acces con excel

Este código es para guardar los datos capturados en un formulario en una base de datos Access 2003, creo que te servira de idea.

Este es el código para guardar el registro (de turnos):

Código vb:
Ver original
  1. Private Sub GuardarBtn_Click()
  2. 'Verifica que el Label tenga la ruta de la base de datos (previamente se abre con un
  3. 'boton y un dialogo o como tu quieras ponerla)
  4.    If RutaLab.Caption = "" Then
  5.         MsgBox "Primero abra la base de datos"
  6.         Exit Sub
  7.     End If
  8.     'Declaro la conexion y el recordset
  9.    Dim BDCn As New ADODB.Connection
  10.     Dim BDRd As New ADODB.Recordset
  11.     BDCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RutaLab.Caption & _
  12.     ";Persist Security Info=False;Jet OLEDB:DataBase Password=***"
  13.     BDRd.Open "Consumo", BDCn, ADODB.CursorTypeEnum.adOpenKeyset, _
  14.     ADODB.LockTypeEnum.adLockOptimistic
  15.     'Aqui se guarda el registro en la BD de Access
  16.    If Not BDRd.BOF = True Then
  17.         BDRd.AddNew
  18.         'Objeto: DTPiker
  19.        BDRd.Update "Turno", TurnoDTPkr.Value
  20.         'Objeto: DTPiker
  21.        BDRd.Update "HoraDel", HoraDelDTPkr.Value
  22.         'Objeto: DTPiker
  23.        BDRd.Update "HoraAl", HoraAlDTPkr.Value
  24.         'Objeto: ComboBox
  25.        BDRd.Update "Despacho", DespachoCmb.Text
  26.     Else
  27.         BDRd.AddNew
  28.         'Objeto: DTPiker
  29.        BDRd.Update "Turno", TurnoDTPkr.Value
  30.         'Objeto: DTPiker
  31.        BDRd.Update "HoraDel", HoraDelDTPkr.Value
  32.         'Objeto: DTPiker
  33.        BDRd.Update "HoraAl", HoraAlDTPkr.Value
  34.         'Objeto: ComboBox
  35.        BDRd.Update "Despacho", DespachoCmb.Text
  36.     End If
  37.     'cierro la conexion y el recordset
  38.    BDRd.Close
  39.     BDCn.Close
  40.     'Aqui una funcion extra donde cargo los datos en una grilla la cual esta
  41.    'en el formulario de la plantilla de excel
  42.    Call CargarDatos(vsFxAyDatos, RutaLab.Caption)
  43. End Sub

Este otro código es para consultar y cargar los datos de la BD en una grilla:

Código vb:
Ver original
  1. Sub CargarDatos(vsFxAy As vsFlexArray, Ruta As String)
  2.     'Abro la conexion y el recordset
  3.    Dim BDCn As New ADODB.Connection
  4.     Dim BDRd As New ADODB.Recordset
  5.     Dim Columna As Integer
  6.     BDCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Ruta & _
  7.     ";Persist Security Info=False;Jet OLEDB:DataBase Password=***"
  8.     'Abro la tabla
  9.    BDRd.Open "Consumo", BDCn, ADODB.CursorTypeEnum.adOpenDynamic, _
  10.     ADODB.LockTypeEnum.adLockReadOnly
  11.     With vsFxAy
  12.         .Rows = .FixedRows
  13.         'aqui cargo los datos en la grilla de un vsFlexArray
  14.        Do While Not BDRd.EOF
  15.             .Rows = .Rows + 1
  16.             .TextMatrix(.Rows - 1, 1) = BDRd.Fields("Turno").Value
  17.             .TextMatrix(.Rows - 1, 2) = Format(BDRd.Fields("HoraDel").Value, "hh:mm AM/PM")
  18.             .TextMatrix(.Rows - 1, 3) = Format(BDRd.Fields("HoraAl").Value, "hh:mm AM/PM")
  19.             .TextMatrix(.Rows - 1, 4) = BDRd.Fields("Despacho").Value
  20.             BDRd.MoveNext
  21.         Loop
  22.         'Cierro la conexion y el recordset
  23.        BDRd.Close
  24.         BDCn.Close
  25.         'ya cargados los datos hago que se autoajusten las columnas con datos
  26.        For Columna = 1 To .Cols - 1
  27.             .AutoSize (Columna)
  28.         Next Columna
  29.     End With
  30. End Sub

Espero te sirvan de base y saludos desde Cuernavaca Morelos, México

P.D. Para est necesitas referenciar la libreria Microsoft ActiveX Data Objects x.x Library en tu plantilla de excel.