Jump to content

giordancisco

Members
  • Content Count

    29
  • Joined

  • Last visited

About giordancisco

  • Rank
    Member

Converted

  • Campos Array

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Gracias Antoni, justo acabo de resolverlo copiando el codigo en cada evento mousemove de cada botón, quedo bien. Pero lo que estaba buscando era lo que usted acabas de idear. Muchas gracias. Cuando sea grande quiero ser como usted!. Un abrazo
  2. Como va? acá les comparto un sencillo efecto de desplazamiento de botones dentro de un formulario. Consiste en el deslizamiento de los botones dependiendo de la cercanía del puntero del mouse, funciona a través del evento mousemove del userform. El único problema que estoy teniendo es que el efecto se corta cada vez que el mouse pasa por algún botón o imagen dentro del mismo formulario (lógicamente porque corta el evento que lo dispara). Si alguien conoce alguna manera de conseguir que el efecto continué de manera fluida por todo el formulario les estare eternamente agradecido. Desde ya muchas gracias a todos ya que no lo habría podido conseguir sin el aporte de todos ustedes dentro de este foro. Un abrazo. Adjunto a continuación el archivo. El efecto esta en el formulario menú principal: https://drive.google.com/file/d/1kJiy9CEtua-ecla5p6E0KqGiMsRe4Dtx/view?usp=sharing
  3. Gracias Antoni, Al final lo termine resolviendo con un bucle, voy a probar tu alternativa seguro esta mejor!. Tuve un problema con algunos valores ya que algunos productos vienen con pulgadas y por lo tanto llevan la comilla simple ' que me anula la sentencia sql, investigando vi que utilizando parameters pero no conseguí adaptar las sentencias de esa forma. Al final termine utilizando replace. Adjunto a continuación el código que estoy utilizando ahora para quien le pueda servir: 'ESTO ES PARA LA TABLA ENTRADAS ACCES Dim Base As String Dim Sql As String Dim Conexion As String Conexion = "PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE =" & Sheets("ACCES").Cells(1, 2).Text & ";PERSIST SECURITY INFO FALSE;" 'LLAMAMOS AL OBJETO ADO Set cn = New ADODB.Connection 'ABRIMOS LA CONEXION cn.Open Conexion 'CREAMOS LA CONSULTA '('" & & "')" Dim descrip As String For i = 0 To Me.ListBox1.ListCount - 1 descrip = Replace(Me.ListBox1.List(i, 2), "'", "''") 'Sql = "INSERT INTO Entradas (Cod,[Descripción],[Cantidad],[PrecioUnitario],SubTotal,[Recibo],Vendedor,Proveedor,Operación) VALUES me.ListBox1.Column" 'Sql = "INSERT INTO Entradas (Cod,[Descripción],[Cantidad],[PrecioUnitario],SubTotal) VALUES (Me.ListBox1.Column(0), & '" & Me.ListBox1.Column(1) & "','" & Me.ListBox1.Column(2) & "','" & Me.ListBox1.Column(3) & "','" & Me.ListBox1.Column(4) & "')" Sql = "INSERT INTO Entradas (Cod,[Descripción],[Cantidad],[PrecioUnitario],SubTotal,[Recibo],Fecha,Vendedor,Proveedor,Operación) VALUES ('" & Me.ListBox1.List(i, 1) _ & "','" & descrip & "','" & Me.ListBox1.List(i, 0) & "','" & Me.ListBox1.List(i, 3) _ & "','" & Me.ListBox1.List(i, 4) & "','" & Me.recibo & "','" & Me.fecha & "','" & Me.vendedor _ & "','" & Me.ComboBox1 & "','" & Me.codnumero.Caption & Me.TextBox1 & "')" 'GUARDAR LA CONSULTA cn.Execute Sql Next 'CERRAMOS LA CONEXION cn.Close Set cn = Nothing MsgBox "Compra registrada Exitosamente."
  4. Como va? estoy intentando mandar los datos de un listbox de excel a una tabla de acces. Se me ocurrió hacerlo directamente, es decir mandar en una sentencia SQL el total del contenido del listbox a la base de datos acces. He intentado lo siguiente pero no funciona: Sql = "INSERT INTO Entradas (Cod,[Descripción],[Cantidad],[PrecioUnitario],SubTotal,[Recibo],Vendedor,Proveedor,Operación) VALUES (me.ListBox1.Column)" o Sql = "INSERT INTO Entradas (Cod,[Descripción],[Cantidad],[PrecioUnitario],SubTotal) VALUES ('" Me.ListBox1.Column(0), & '" & Me.ListBox1.Column(1) & "','" & Me.ListBox1.Column(2) & "','" & Me.ListBox1.Column(3) & "','" & Me.ListBox1.Column(4) & "')" Tambien he intentado reemplazar el VALUES por SELECT pero tampoco funciona Desde ya si me pueden orientar con esto les estaré eternamente agradecido. Saludos El formulario se llama "COMPRAS" https://drive.google.com/file/d/1S-ioBt0-68P8w77RDk9TOJOpLLVEFMNh/view?usp=sharing base de datos acces: https://drive.google.com/file/d/1x9S6956OdjK6ZShvD2LOG0XFwY3l0o1G/view?usp=sharing
  5. Gracias Antoni por probarlo, creo que he estado trabajando con el mismo archivo que subi y se debio de haber actualizado antes de que lo descargaras ya con las nuevas modificaciones que le hice: solo tenia que ordenar mejor las variables y mejora las condicions "if".Adjunto a continuación las nuevas lineas de código: dim xx as doueble Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) On Error Resume Next 'Me.Label21.Top = 320 'Me.Label21.Visible = False If Me.ListBox1.ListCount = 0 Then Exit Sub End If Índice = CInt((Y - 5) / Alto) Me.Label21 = " " & Me.ListBox1.List(Índice + Me.ListBox1.TopIndex, 2) If Índice > Me.ListBox1.ListCount - 1 Then If Me.Label21.Top = 330 Then For xx = 330 To 320 Step -0.25 Me.Label21.Top = xx Sleep (2) DoEvents Next xx 'Exit Sub 'Me.Label21.Top = 320 Me.Label21 = "" Exit Sub End If End If 'Me.Label21.Visible = False If Índice <= Me.ListBox1.ListCount - 1 Then If Me.Label21.Top = 320 Then For xx = 320 To 330 Step 0.25 Me.Label21.Top = xx Sleep (2) DoEvents Next xx Exit Sub End If Me.Label21.Top = 330 'Me.Label21.Visible = True Exit Sub End If Me.Label22 = "Y: " & Y Me.Label23 = "Indice: " & Índice Me.Label24 = "CInt((Y) / Alto): " & CInt((Y) / Alto) End Sub Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Me.Label21.Top > 320 < 330 Then Me.Label21.Top = 320 'Dim xx As Double 'For xx = 330 To 320 Step -0.25 'Me.Label21.Top = xx 'Sleep (2) 'DoEvents 'Next xx 'Exit Sub End If End Sub
  6. Como va? Basándome ya en algunos temas tratados en este foro estoy tratando de añadir una animación de transición que consiste en la aparición de un label que muestra el texto entero que contiene una fila de de un listbox que se dispara a través de un evento de movimiento del mouse sobre las coordenadas de posición del puntero del mismo en la fila del listbox en cuestión. No lo he podido conseguir por el momento porque el label titila demasiado. Adjunto código y archivos, desde ya muchas gracias. Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single) On Error Resume Next Dim xl As Integer 'Me.Label21.Top = 320 'Me.Label21.Visible = False Índice = CInt((Y - 5) / Alto) Me.Label21 = " " & Me.ListBox1.List(Índice + Me.ListBox1.TopIndex, 2) If Índice > Me.ListBox1.ListCount - 1 Then Me.Label21.Top = 320 'Me.Label21.Visible = False Me.Label21 = "" Else 'Me.Label21.Visible = True For xl = 320 To 330 Sleep 2 DoEvents Me.Label21.Top = xl Next xl End If Me.Label22 = "Y: " & Y Me.Label23 = "Indice: " & Índice Me.Label24 = "CInt((Y) / Alto): " & CInt((Y) / Alto) End Sub Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single) If Me.Label21.Top = 330 Then For xl = 330 To 320 Step -1 Sleep 2 DoEvents Me.Label21.Top = xl Next xl End If Me.Label21.Top = 320 'Me.Label21.Visible = False End Sub Lo que quiero intentar es que el label se desplace desde la posición top: 320 a 330 cuando se posiciona el puntero del mouse sobre la fila y cuando se posiciona afuera del listbox de modo contrario se oculte deslizándose hacia arriba top:330 a 320 El formulario se llama "COMPRAS" https://drive.google.com/file/d/1S-ioBt0-68P8w77RDk9TOJOpLLVEFMNh/view?usp=sharing base de datos acces: https://drive.google.com/file/d/1x9S6956OdjK6ZShvD2LOG0XFwY3l0o1G/view?usp=sharing
  7. Como va? tengo un problema que no lo he podido resolver bien por una cuestión de lógica. Tengo un listbox que toma los datos de otro listbox, el dato que quiero modificar se trata del precio unitario de productos que corresponde al precio de venta en EFECTIVO. Partiendo de ese dato una vez cargada toda la factura requiero de poder cambiar el valor del precio de venta en efectivo por el valor del precio de tarjeta que es igual al precio de venta + el 30%. La forma de pago se cambia a través de un combobox. Si en efecto el combobox a través del evento change se posiciona en "TARJETA" debe sumarle a toda la columna de precio unitario un 30% y si se vuelve a elegir forma de pago en "EFECTIVO" debería volver al precio extraído de venta original que resultaría de aplicar /1,3. Hasta ahí pude llegar a solucionar el problema con el siguiente código: For i = 0 To ListBox1.ListCount - 1 If Me.tipodepago.Value = "TARJETA" Then Me.ListBox1.List(i, 2) = Format(Me.ListBox1.List(i, 2) + (Me.ListBox1.List(i, 2) * 0.3), "$###,##0.00#########") Me.ListBox1.List(i, 3) = Format(Me.ListBox1.List(i, 3) + (Me.ListBox1.List(i, 3) * 0.3), "$###,##0.00#########") End If If Me.tipodepago.Value = "EFECTIVO" Then Me.ListBox1.List(i, 2) = Format(Me.ListBox1.List(i, 2) / 1.3, "$###,##0.00#########") Me.ListBox1.List(i, 3) = Format(Me.ListBox1.List(i, 3) / 1.3, "$###,##0.00#########") End If Next El problema es que esto funciona si solo hay 2 formas de pago: TARJETA o EFECTIVO y en el combobox hay ademas otras formas de pago: CHEQUE, CRÉDITO, etc que se corresponderían al igual que a TARJETA con el precio de lista que es igual al precio de venta + 30% y es ahí donde empieza a no funcionar este código, porque cada vez que cambie entre TARJETA o CRÉDITO el valor del precio en el listbox ira aumentando un 30 por ciento. Seguro esto tiene una solución mas sencilla y lógica, espero me puedan ayudar, desde ya muchas gracias. Adjunto los archivos. el formulario se llama "Factura". Se puede cargar el listbox manualmente sin la necesidad de buscar los productos en la base de datos, tener en cuenta que hay que imaginar que el precio que se ponga en el textbox de precio unitario sera el precio de venta en efectivo, ya que la base de datos contiene solo el precio de venta en efectivo. https://drive.google.com/file/d/15as5_bgAZ2hCb9TNulH9s_tF1EIfACCQ/view?usp=sharing base de datos acces: https://drive.google.com/file/d/1FZ8O8iY6ApMbYUPwBR-2Gn0Ksx7cZABi/view?usp=sharing
  8. Lo acabo de probar un funciono! nuevamente muchísimas gracias señor Antoni!. Me hizo feliz. Bendiciones.
  9. Muchas gracias señor antoni, ahora voy a probar su propuesta. En el link que adjunte lo que hice fue quitar los formularios que tenia la base de datos que dificultaban la visualización de las tablas, contiene 3 tablas: La tabla "caja" es la referencia. la tabla "cajafinal" es una copia de la tabla de excel que es la que estoy generando ahora para conseguir los valores únicos, y la tabla "personas" es una lista de productos que para este caso no influye en nada. La solución que encontré antes de que pueda ver su mensaje fue la de crear paralelamente una copia de la tabla de excel en la tabla "cajafinal" del archivo de acces al momento de registrar en el formulario "cajaform". Es decir se hace un registro doble al mismo tiempo tanto en la tabla de excel como en la de acces. De todos modos esto no era lo que pretendía, Así que ahora voy a proseguir con el código que usted muy amablemente me sirvió. Muchas gracias Antoni
  10. No se si los link se actualizan. Vuelvo a copiar y pegar el link con las nuevas modificaciones, tambien le saque el formulario que tenia el archivo acces. Adjunto el archivo excel y acces https://drive.google.com/file/d/1UMQKegqUQbwJ93MQ8TFOslqMVE-7llmV/view?usp=sharing https://drive.google.com/file/d/1FZ8O8iY6ApMbYUPwBR-2Gn0Ksx7cZABi/view?usp=sharing
  11. Por ahora conseguí agregar los resultados únicos creando la tabla de excel en acces con este sentencia SQL: Sql = "SELECT FormatCurrency([Monto comprobante]) as [Monto comprobante],[Nº Comprobante],[Tipo comprobante],[Observacion],[Dirección],[Tipo de Pago],[Vendedor] FROM caja where [Nº Comprobante] not in (Select distinct [Nº Comprobante] from caja2)" Si pudiera hacer una sentencia similar a esta pero que funcione con la tabla de excel estaría mas que contento. Desde ya muchas gracias
  12. Como va? tengo un un formulario en excel que consta de un listbox que por el momento se llena con los valores de una tabla de acces. Lo que necesito es que solo se carguen los valores que no se encuentran en una tabla de excel que se encuentra en el mismo libro del formulario. Este es el codigo que estoy usando ahora para llenar el listbox: Dim Base As String Dim Sql As String 'Dim rs As String Dim tb As String Dim np As String 'E:\Dropbox\MIS PROGRAMAS\ACCES\Buscador de Precios 64 bits 9-4-19.accdb 'HOJA OPCIONES CELDA U2 Dim Conexion As String Conexion = "PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE =" & Me.TextBox1.Text & ";PERSIST SECURITY INFO FALSE;" 'uf2 = Sheets("ACCES").Range("I" & Rows.Count).End(xlUp).Row 'Sheets("ACCES").Range("B11:I" & uf2).Clear 'LLAMAMOS AL OBJETO ADO Set cn = New ADODB.Connection 'ABRIMOS LA CONEXION cn.Open Conexion 'CREAMOS LA CONSULTA Set rs = New ADODB.Recordset With rs .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockOptimistic End With 'Consulta = Consulta & " WHERE " & Me.cmbCampo & " Like '*" & Me.txtBusqueda.Text & "*'" 'Sql = "SELECT * FROM Personas where Descripción like " & "'%" & Range("D6") & "%'" 'Like Replace("'%" & UCase(txtBusqueda.Value) & "%'", " ", "%") And 'Sql = "SELECT * FROM Personas where Descripción like " & "'%" & txtBusqueda & "%'" ',FormatCurrency([Precio]) as Precio 'Sql = "SELECT * FROM Personas where " & tb & " like " & Replace("'%" & UCase(txtBusqueda.Value) & "%'", " ", "%") & "AND Proveedor = " & "'" & np & "'" ''cmbCampo.value' Sql = "SELECT FormatCurrency([Monto comprobante]) as [Monto comprobante],[Nº Comprobante],[Tipo comprobante],[Observacion],[Dirección],[Tipo de Pago],[Vendedor] FROM caja" 'where [Nº Comprobante] <> " rs.Open Sql, Conexion If rs.EOF Then MsgBox "No se encontraron registros." Exit Sub End If Me.ListBox1.Column = rs.GetRows 'Range("B11").CopyFromRecordset rs 'uf = Sheets("ACCES").Range("I" & Rows.Count).End(xlUp).Row 'Me.Lista.RowSource = "ACCES!B11:I" & uf cn.Close rs.Close Set rs = Nothing Set cn = Nothing End Sub Adjunto el archivo de excel y la base de datos en acces https://drive.google.com/file/d/1UMQKegqUQbwJ93MQ8TFOslqMVE-7llmV/view?usp=sharing https://drive.google.com/file/d/1FZ8O8iY6ApMbYUPwBR-2Gn0Ksx7cZABi/view?usp=sharing La tabla en acces se llama: caja En excel la tabla se encuentra en la hoja "Base de datos" Desde ya muchas gracias estoy abierto a cualquier sugerencia. Un abrazo
  13. Si efectivamente el problema era abrir el archivo desde la carpeta compartida de DROPBOX. Yo pensaba que al estar en mi pc es como si estuviera en cualquier ubicación de mi computadora por mas que la sincronización este pausada. Pareciera ser que dropbox no se lleva muy bien con excel voy a probar con Google drive. Muchas gracias por todo, el tema si les parece se puede dar como finalizado.
×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 5112 personas - Aprender Excel - Total: 4.7 / 5