Saltar al contenido

Conectar a un libro mediante SQL


Recommended Posts

publicado

Holas a todos, veran tengo este problemita. secede que tengo un libro llamado bitacora y este funciona con un form que se conecta mediante SQL todo esto en el mismo libro y funciona perfectamente.

Ahora quise pasar el formulario y el modulo donde esta la conexion sql a mi otro proyecto osea tengo ahora una carpeta llamada prueba dentro de esta el archivo bitacoras y el otro akelos es te ultimo el principal, a este le agregue el form de bitacoras y el modulo de la conexion. pero l ejecutarlo no funciona el form de la bitacora no se conecta.

me pueden ayudar a conectar a este libro de bitacoras .

Option ExplicitPublic Cnx As New ADODB.ConnectionPublic Rst As New ADODB.RecordsetPublic Cnx1 As New ADODB.ConnectionPublic Rst1 As New ADODB.RecordsetPublic elegida As StringSub Conectar()Application.ScreenUpdating = FalseDim UltFila As Long, NombreHoja As String, Maq As StringDim Fila As Long, Columna As Long
Cnx.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & _ ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
Datos.SelectNombreHoja = Datos.NameUltFila = Datos.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).RowSet Rst = New ADODB.RecordsetWith Rst .ActiveConnection = Cnx .CursorType = adOpenStatic .CursorLocation = adUseClient .LockType = 3 'adLockBatchOptimisticEnd WithEnd Sub[/HTML]

ese codigo funciona perfectamente en el mismo libro, ayudenme a conectarme desde akelos a bitacoras mediante sql.

Agradesco su ayuda .

Saludos

Muscaria

publicado

Hize un formulario d prueba ya que el original pesa demasiado como ara subirlo, igual este archivo de prueba pesa un poquito de lo permitido asi que lo subi a Skydrive para que lo puedan descargar.

Clic en Akelos

la ubicación en el disco D:\

si ejecutan solo bitácora verán que funciona bien ahora si abren el archivo akelos y llaman al formulario de bitácoras verán que no funciona la conexión.

espero que me puedan ayudar. :tan:

Gracias

Saludos

Muscaria

publicado

Holas a todos, hize algunos cambios al codigo de conexion pero ahora me dice que se requiere un objecto y me llama marca al Userform1.show

Ahora puse este codigo.

Cnx.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Pruebasql\Bitacora.xlsm " & _
";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"[/PHP]

por favor alguna sugerencia.

Saludos

Muscaria

post-69778-145877004327_thumb.jpg

post-69778-145877004328_thumb.jpg

publicado

Hola siguiendo con el tema, use otro tipo de conexión.


Option Explicit
Public Cnx As New ADODB.ConnectionPublic Rst As New ADODB.RecordsetPublic elegida As StringSub Conectar()Application.ScreenUpdating = FalseDim UltFila As Long, NombreHoja As String, Maq As StringDim Fila As Long, Columna As LongCnx.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\BITACORA.xlsx" & _ ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"Datos.SelectNombreHoja = Datos.NameUltFila = Datos.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).RowSet Rst = New ADODB.RecordsetWith Rst .ActiveConnection = Cnx .CursorType = adOpenStatic .CursorLocation = adUseClient .LockType = 3 'adLockBatchOptimisticEnd With End Sub[/PHP]

como dije en otro tema, me dice que el formulario no existe. alguna ayuda por favor.

Saludos

Muscaria

publicado

Saludos.

Por lo poco que pude ver no es en si el formulario si no el objeto Datos que hace referencia a una hoja, no puedo trabajar con tu archivo ya que tiene controles no muy comunes y que son de licencia como el Flexgrid basicamente no se pueden hacer las pruebas pertinentes espero haberte ayudado en algo.

Atte.

joshua

publicado

Yo tube un problema similar y loq ue hise fue instalar el Vb6 y una actualizacion y funcionaron los controles otro me dijo que buscara las dll de esos controles y las registrara.

Espero que te sirva de algo.

Nos vemos

Celest3

publicado

Saludos Muscaria.

Primera y única advertencia estas infrigiendo la siguiente norma.

[info]

  • * 2.3 Nunca utilices el tema de otro usuario para tus consultas, aunque sea similar. Crea tu propio tema.

[/info]

Por favor sigue y respeta las normas del foro, no nos obligues a tomar otras medidas.

Atte.

joshua

publicado

Ok Joshua, mi tema estaba creado y le di una alternativa a su consulta ya que ambos estamos en un tema parecido.

de todas maneras no volvera a suceder. y disculpen.

Saludos

Muscaria

publicado

hola a todos, sigo con mi problema de poder conectarme a otro libro desde un formulario usando usando conexion Ado

en resumen.

1.- antes tenia el libro bitacora y programado en el mismo libro, todo funciona perfectamnete .

2.- ahora trato de conectarme desde un formulario que pertenece a otro libro

3.- cuando lo llama me dice que falta objecto y me marca el Userform1que es el formulario de para ingresar datos a la bitacora y aveces me marca Datos.select que es una hoja que esta en el libro bitacora.

4.- yo yengo todos los controles instalados como les dije en el archivo original que todo funciona desde le mismo libro no hay problemas, por eso descarto que se por controles.

5.- pienso que tal vez la conexión este mal ?¡

he subidos algunos ejemplo esperando le echen un vistazo y me ayuden a ver el problema.

espero su apoyo.

Gracias

Muscaria

publicado

Buenas tardes, al no ver una repuesta, quizas puedan darme otras alternativas para hacer este proceso. o ver si la conexion esta bien o algo falta.

espero contar con su apoyo

gracias

Saludos

Muscaria

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.