elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: [1] 2 3 4
1  Programación / Programación Visual Basic / Importar datos desde Excel a Access con Vb6.0 en: 15 Diciembre 2014, 23:57 pm
Hola estimados,

Vengo a solicitar su ayuda para intentar resolver un problema que me tiene de cabeza, literalmente xD!

El tema es "super simple", quiero importar datos desde una planilla Excel a una tabla en Access, PERO no me funciona y no puedo saber porque.

Para intentar esclarecer un poco y me puedan entender, estos son los archivos que uso.

Una planilla Excel, donde los datos están distribuidos en 6 columnas sin formato (no es un archivo CSV). Probé poniendo el mismo nombre de los campos que en la base de datos, pero no funcionó.
Código:
168914 asdf 28/11 30/11 4.890 3990
132112 asdf 28/11 30/11 4.890 40% DCTO
149955 asdf 28/11 30/11 4.890 40% DCTO
149956 asdf 28/11 30/11 4.890 40% DCTO
178377 asdf 28/11 30/11 4.890 40% DCTO
178379 asdf 28/11 30/11 4.890 40% DCTO
178380 asdf 28/11 30/11 4.890 40% DCTO
185147 asdf 28/11 30/11 4.890 40% DCTO
197620 asdf 28/11 30/11 4.890 40% DCTO
208424 asdf 28/11 30/11 4.890 40% DCTO

Y la base de datos Access.



Y el código que tengo para hacerlo es el siguiente:
Código
  1. Option Explicit
  2.  
  3. Private Sub cmdLoad_Click()
  4. Dim excel_app As Object
  5. Dim excel_sheet As Object
  6. Dim db As Database
  7. Dim new_value As String
  8. Dim row As Integer
  9.  
  10.    Screen.MousePointer = vbHourglass
  11.    DoEvents
  12.  
  13.    Set excel_app = CreateObject("Excel.Application")
  14.  
  15. '    excel_app.Visible = True
  16.  
  17.    excel_app.Workbooks.Open FileName:=txtExcelFile.Text
  18.  
  19.    If Val(excel_app.Application.Version) >= 8 Then
  20.        Set excel_sheet = excel_app.ActiveSheet
  21.    Else
  22.        Set excel_sheet = excel_app
  23.    End If
  24.  
  25.    Set db = OpenDatabase(txtAccessFile.Text)
  26.  
  27.    row = 1
  28.    Do
  29.  
  30.        new_value = Trim$(excel_sheet.Cells(row, 1))
  31.  
  32.        If Len(new_value) = 0 Then Exit Do
  33.  
  34.        db.Execute "INSERT INTO BDOfertas VALUES (" & new_value & ")" ' ACA ES DONDE ME MARCA AL MOMENTO DE MOSTRAR EL ERROR EN TIEMPO DE EJECUCION. (LINEA 34)
  35.  
  36.        row = row + 1
  37.    Loop
  38.  
  39.    db.Close
  40.    Set db = Nothing
  41.  
  42.  
  43.    excel_app.Quit
  44.    Set excel_sheet = Nothing
  45.    Set excel_app = Nothing
  46.  
  47.    Screen.MousePointer = vbDefault
  48.    MsgBox "Copied " & Format$(row - 1) & " values."
  49. End Sub
  50.  
  51. Private Sub Form_Load()
  52. Dim file_path As String
  53.  
  54.    file_path = App.Path
  55.    If Right$(file_path, 1) <> "\" Then file_path = file_path & "\"
  56.    txtExcelFile.Text = file_path & "TEST.xls"
  57.    txtAccessFile.Text = file_path & "CLLBD.mdb"
  58. End Sub
  59.  

Y el error que obtengo es el siguiente:

Código:
Error '3346' en tiempo de ejecución:

El número de valores de consulta y el número de campos de destino son diferentes.


He intentado con muchos códigos hacer lo que quiero, pero nada parece funcionar, o yo lo estoy haciendo mal. Solo me falta esto para terminar este formulario del proyecto, pero no se como solucionarlo.


Atento a comentarios,
Atte.
Francisko.
2  Programación / Programación Visual Basic / [VB6]Filtro por fechas en DataGrid en: 21 Noviembre 2014, 00:00 am
Estimados, buenas tardes (dias, noches, etc)

Hoy vengo a solicitar su ayuda para hacer un filtro a un DataGrid que me esta quebrado la cabeza xD.

Uso el siguiente codigo para cargar los datos al DataGrid:

Código
  1. Sub Conexion()
  2.   Set cn = New ADODB.Connection
  3.   cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataAndStuff\cllbd.mdb;Persist Security Info=False"
  4.   Set rs = New ADODB.Recordset
  5.   rs.ActiveConnection = cn
  6.   rs.CursorLocation = adUseClient
  7.   rs.CursorType = adOpenDynamic
  8.   rs.LockType = adLockOptimistic
  9.   rs.Source = "Select * From BDOfertas"
  10.   rs.Open
  11.  
  12. End Sub
  13.  

Hasta ahí todo bien.
Ahora, lo que quiero hacer es (con dos TextBox y un CommandButton) un filtro por rango de fechas. PERO (¬¬) no me funciona y no me arroja ningún error ni nada D:.

Para hacer el filtro tengo el siguiente codigo:

Código
  1. Sub ConsultaFechas()
  2.  
  3.   SqlDos = "SELECT * FROM BDOFertas WHERE F_Desde > " & txtFechaUno.Text & " And F_Hasta < " & txtFechaDos.Text & ""
  4.   Set rs = New ADODB.Recordset
  5.   rs.CursorLocation = adUseClient
  6.   rs.Open SqlDos, cn, adOpenStatic, , adCmdText
  7.  
  8. End Sub
  9.  

Se supone que ahí debería filtrar solo ese rango de fechas, pero no me funciona, no se porque, y como dije antes, tampoco me da ningún error. Solo no filtra.

Si alguno de uds me pudiese ayudar con esto. En realidad nunca he sido bueno con las consultas xD.

Saludos y gracias de ante mano!.

PD: Probe con RS.Update al final del Sub, pero me da el error: "El recorset actual no permite actualizaciones asdf"
3  Programación / Programación Visual Basic / [Excel][VB6] Ejecutar archivo Excel.Solucionado en: 15 Julio 2014, 01:25 am
Hola! :D, he vuelto, con mas preguntas xD.

Directo al grano a ver si alguien me puede ayudar T_T,

Tengo un formulario en donde proceso un archivo Excel (esto me sabe a Déjà vu xD), todo bien, pero quiero que al terminar todo el proceso se abra el archivo para poder seguir usándolo, pero (siempre un pero ¬¬) no me resulta abrirlo, me aparecen una serie de errores antes de abrir el primero archivo Excel de la carpeta y NO el que estoy procesando.

Este es el código que uso para abrir el archivo:

Código
  1. Shell(RutaExcelExe & " " & InvFilePath)
Donde:

RutaExcelExe contiene la ruta donde esta instalado MSExcel.

Código:
C:\Archivos de Programa\Microsoft Office\Office12\Excel.exe

InvFilePath contiene la ruta completa del archivo que estoy procesando. La ruta que contendrá esta variable puede variar (valga la redundancia) ya que el archivo puede ser tomando desde cualquier parte desde un CommonDialog.

Los errores que obtengo son los siguientes
Código:
No se encontró "C:\Documents.xlsx" bla bla bla
No se encontro "and.xlsx"
No se encontro "Settings\panxin\escritorio\ProyectoAsdf\XLSX's\.xlsx"
No se encontro "TEST\Copia.xls"
No se encontro "(2).xlsx"

Lo intente cambiando el comando de la siguiente forma, pero  con comillas ya no toma las variables como variables y si como la ruta y el nombre del archivo, obteniendo el error
Código
  1. Shell("RutaExcelExe" & " " & "InvFilePath")

Código:
"No se encuentra el archivo "InvFilePath"" ¬¬

Así es que es por esto que vengo a solicitar vuestra ayuda a ver si alguien me puede guiar :D!

Saludos y gracias de ante mano :D!


4  Programación / Programación Visual Basic / [VB] [Registro ] Modificar valor DWORD (Solucionado) en: 14 Junio 2014, 17:40 pm
Estimados, necesito su ayuda de nuevo!

Necesito saber como modificar un valor DWORD en el registro, el valor cambia de 1  a  0, he buscado pero NO ENTIENDO NADA DE ESTO, y necesito que me guíen o ayuden directamente xD por favor xD.

tengo la ruta dónde está la clave y el nombre.

["HKEY_CURRENT_USER\Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security\" ]
 y la clave es AccessVBOM.

por favor si alguien me puede ayudar,  es lo único que me falta para terminar mi programa.

gracias de ante mano!

Saludos!
5  Programación / Programación Visual Basic / [VB6][Excel] Habilitar Opción mediante código. en: 13 Junio 2014, 01:49 am
Hola a todos, saludos de nuevo! :D

Hoy vengo a solicitar su ayuda con sobre como habilitar una opción de Excel mediante código. Les explico mejor:

Tengo terminado un formulario para procesar archivos .XLS generados por SAP. Lo que hago es crear un MACRO desde Visual, añadirla a Excel y ejecutarla, hasta ahí todo bien. El tema es que necesito habilitar una opción de Excel para evitar que me de el siguiente error:



Y la opción que necesito habilitar mediante código es la siguiente:



Estoy haciendo el programa para la empresa en la que trabajo y solo me falta eso, ya que la idea es que los usuarios no tengan que ir a opciones "extrañas" ya que no todos tienen la misma versión de Office como para explicar en el programa como llegar a esa opción y habilitarla.

Dejo el código que uso para Generar y Ejecutar el macro.

Código
  1. Dim ExcelApp As New Excel.Application
  2. Dim HojaExcel As Excel.Worksheet
  3. Dim LibroExcel As Excel.Workbook
  4. Dim ModuloExcel As Object
  5. Dim CodigoMacro As String
  6. Dim Linea As String, Total As String
  7. Dim EstrucComercial As String
  8. Dim InvFilePath As String
  9.  
  10. Private Sub Command1_Click()
  11. If InvFilePath = "" Then
  12.    respuesta = MsgBox("Debe seleccionar un archivo a procesar.", vbExclamation, "Cuidado!.")
  13.    Exit Sub
  14.    Else
  15. Command1.Caption = "Procesando..."
  16. Command1.Enabled = False
  17. BBuscarXls.Enabled = False
  18.  
  19. PB1.Value = 0
  20. PBLabel.Caption = "Buscando Archivo..."
  21. PB1.Value = PB1.Value + 1
  22.  
  23. EstrucComercial = App.Path & "\DataAndStuff\EstructuraComercial3.0.xlsx"
  24. PBLabel.Caption = "Abriendo Archivos..."
  25. PB1.Value = PB1.Value + 1
  26.  
  27. Set LibroEC = ExcelApp.Workbooks.Open(EstrucComercial)
  28. Set LibroExcel = ExcelApp.Workbooks.Open(InvFilePath)
  29.  
  30. PBLabel.Caption = "Buscando Datos..."
  31. PB1.Value = PB1.Value + 1
  32.  
  33. Set HojaExcel = LibroExcel.Sheets.Item(1)
  34.  
  35. PBLabel.Caption = "Configurando Consulta..."
  36. PB1.Value = PB1.Value + 1
  37.  
  38. Set ModuloExcel = LibroExcel.VBProject.VBComponents.Add(vbext_ct_StdModule) ' Aca es donde daria problemas en la ventana de programador y en el exe compilado.
  39. 'ExcelApp.Visible = True
  40.  
  41. PBLabel.Caption = "Ejecutando Consulta..."
  42. PB1.Value = PB1.Value + 1
  43.  
  44. CodigoMacro = _
  45.    "Sub OrdenPlanillaInventario()" & vbCr & _
  46.    Total & vbCr & _
  47.    "End Sub"
  48.   PBLabel.Caption = "Ordenando Datos..."
  49.   PB1.Value = PB1.Value + 1
  50.  
  51. ModuloExcel.CodeModule.AddFromString CodigoMacro
  52. ExcelApp.Run ("OrdenPlanillaInventario")
  53.  
  54. PBLabel.Caption = "Guardando Archivo..."
  55. PB1.Value = PB1.Value + 1
  56.  
  57. ExcelApp.DisplayAlerts = False
  58. LibroExcel.SaveAs InvFilePath, FileFormat:=xlNormal
  59. LibroExcel.Close SaveChanges:=False
  60.  
  61. PBLabel.Caption = "Listo!."
  62. PB1.Value = PB1.Value + 1
  63.  
  64. ExcelApp.Quit
  65. Command1.Caption = "Listo!."
  66. Command1.Enabled = False
  67. BBuscarXls.Enabled = False
  68.  
  69. End If
  70. End Sub
  71.  


Saludos y gracias de ante mano :D!
6  Programación / Programación Visual Basic / [VB6.0] Duda con como hacer una comprobacion en: 31 Marzo 2014, 17:44 pm
Hola, buenas , :DD


Tengo una duda sobre como implementar una comprobacion sobre un inputbox.

Tengo este codigo

Código
  1. 'codigo anterior
  2. respuesta = InputBox ("ESCRIBA MOTIVO MERMA", "MERMA")
  3. ' demas codigo
  4.  

El tema es que solo hay 6 tipos de merma, entonces mi idea es hacer una comprobacion sobre SI NO escribe ninguno de los motivos permitidos aparezca un error o advertencia. PERO el tema es que no se como hacerlo.. o sea pense con IF's, pero creo que es muy engorroso hacer un if por cada motivo, porque el programa tendria que comprobar muchas veces cada vez que se ingrese y eso lo haria lento.

Es por eso que vengo a solicitar ayuda a ver si me pueden guiar sobre como hacerlo. Pense que podia ser con WHILE, pero no se como usar WHILE con variables.

Eso, porfavor si alguien me puede ayudar se lo agradeceria mucho.

Los motivos son en este formato :

Código:
51
52
53
54
70
71
72

O sea eso seria lo que el usario debiera ingresar y si no, bueno pues que de el error xD.

Saludos y gracias de ante mano.
7  Programación / Programación Visual Basic / [VS2008]COMException en consulta a BaseDeDatos en: 18 Marzo 2014, 21:26 pm
Hola a todos, saludos :D

Vengo a molestar de nuevo con mis dudas, pero por mas que busque nada me funciono.

Importe mi proyecto de VB6 a VS2008 (algunos pensaran que es tonto o no se xD). Al momento de ejecutar el proyecto me lanza un error de COMException en una consulta a la base de datos Access (*.mdb).

Esta es la forma en que abro/cargo la BD. (En el form Activate)

Código
  1. mibd.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\DBLOCALES.mdb;Persist Security Info=False")
  2.  

 Y esta es la consulta que va en el boton
Código
  1. mirec.Open("SELECT * FROM DBLOCALES WHERE Tienda = '" & (TLocal).Text & "' ", mibd, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
  2.  

Y me da el siguiente error cuando va a hacer la consulta.



Busque documentación sobre como controlar este error, pero nada de lo que encontré me sirve o se aplica a mi proyecto. Pensé que podría estar mal echa la consulta, pero no me marca o subraya ninguna error en el IDE, ademas la importación la hace automática, por ende supongo que no esta mal echo.

Bueno en fin, quisiera saber si alguien me puede ayudar con el tema, o por lo menos guiar hacia donde tengo que ir o donde buscar.

Sinceramente creo que mi método es muy anticuado, pero por lo mismo estoy tratando de migrar (actualizar en este caso). El tema es que no se como hacer bien la consulta ahora.

A ver si alguien se anima y me da una mano.

Saludos! y Gracias por cualquier ayuda :D.
8  Programación / Programación Visual Basic / [VB6] Problema con MonthView Control. en: 4 Marzo 2014, 15:31 pm
Hola!, yo de nuevo aca xD.

Tengo un problema con el control MonthView en VB6. El tema es que al cargar el Form el mes que me aparece en el MonthView es el de Febrero y marca el dia 25 (aparece destacado con un color de fondo). En cambio si avanzo al mes actual (marzo) si me aparece con un circulo el dia actual.
 Mi pregunta es, o mis preguntas son:
   
Porque aparece marcado febrero aun en el MV?,  pensaba yo que podia ser la ultima fecha seleccionada, pero no, porque use hoy el programa y marqué otra fecha y al salir y cargar de nuevo siempre me marca ese dia.

Y la otra pregunta:

Hay alguna forma de hacer que aparezca destacado el dia actual en el MV?  , no me refiero al marcado con ciruclo, si no el "destacado".


Eso, espero alguien tenga alguna idea de lo que hablo aajja.

Saludos, y gracias de ante mano!!

PD: en el Form_Load() hago MonthView.Refresh, pero parece que no ayuda.
9  Programación / Programación Visual Basic / [Vb6][Access] Ayuda con consulta a BD. en: 5 Febrero 2014, 22:51 pm
Hola a todos, saludos;
He venido a molestar de nuevo, pero es que en verdad no se me da lo de las consultas xD, es por eso que he venido a solicitar vuestra ayuda :D!!

Lo que quiero hacer es lo siguiente,

Tengo una base de datos en Access (*.mdb) en la que tengo 3 columnas donde esta la información que quiero rescatar, las columnas son las siguientes y se componen de los siguientes datos. (obviamente no los escribiré todos o me faltaría foro xD)

Código:
Material Des_Material                         EAN
30201         PAN CORRIENTE KILO                 30201
1342            ABASTERO VACUNO NACI KG                 EAN_NOT_FOUND
1364            ABASTERO VACUNO CAT U GRANEL 1 KG 87168

La tabla se compone de esa forma, hay Materiales que son iguales a los EAN y otros no, y hay EAN en donde no hay datos pero se representan como "EAN_NOT_FOUND" (para no dejar el espacio en blanco)

Lo que hago yo en el programa es ingresar un numero (Material o EAN) en un InputBox y ahi me busca el material con la siguiente consulta

Código
  1. MaterialSAP = InputBox("Ingrese Material SAP", "Ingreso Mermas")
  2.  
  3.    mirec.Open "SELECT * FROM CllDB WHERE material = " & (MaterialSAP) & " ", mibd, adOpenKeyset, adLockOptimistic
  4.  
  5.    If mirec.RecordCount > 0 Then ' verifico si encontro registro
  6.        des_material.ForeColor = &H8000& ' cambio el color de la letra si lo encontro
  7.        des_material.Caption = mirec!des_material ' muestro la descripcion del material en el label des_material
  8.        mirec.Close
  9.     Else
  10.        If mirec.RecordCount = 0 Then ' si no encontro nada
  11.            des_material.ForeColor = &HFF& ' cambio el color a rojo
  12.            des_material.Caption = "MATERIAL NO ENCONTRADO" ' y muestro esto.
  13.            mirec.Close
  14.     End If
  15.    End If
  16.  

Si encontró el producto, me muestra el nombre del material (des_Material) y si no, muestra "MATERIAL NO ENCONTRADO".

Pero ahora si, lo que necesito es lo siguiente (es un poco complicado de explicar).

Por ejemplo, si yo ingreso el siguiente numero: 87168 que me muestre el material 1364 y la descripción del material, pero si ingreso un numero y no esta en la columna EAN que busque en la columna "Material" y muestre el valor encontrado, pero si no existe en ninguna de las dos columnas que muestre "material no encontrado" y que la variable (MaterialSAP) quede con el valor ingresado.

Se entiende? xD, en verdad tengo la idea en mi mente, pero no se como llevarla a consulta, ya que como dije mas arriba soy realmente malo para las consultas complicadas xD!!. Es por eso que he venido aca a pedir ayuda, a ver si a alguien se le ocurre algo :D!!..

Eso, espero algun alma bondadosa me pueda ayudar con este tema que me esta quebrado la cabeza xD!

Saludos, y gracias de ante mano!!

10  Programación / Programación Visual Basic / Copiar la porta papeles, error en código. en: 14 Enero 2014, 21:59 pm
Hola, saludos,
 
  He venido a solicitar ayuda con un código que me esta quebrando la cabeza xD.
  El tema es que tengo un programa para digitar pedidos de materiales, tengo todo listo, excepto la parte donde copio los datos del List1 al porta papeles, he probado muchos códigos pero ninguno parece funcionar.

Este es el codigo:

Código
  1. Private Sub CopiarOC_Click()
  2. Dim strList As String
  3. Dim i As Integer
  4. For i = 0 To Me.List1.ListCount - 1
  5. If Len(Trim(Me.List1.List(i))) > 0 Then
  6.    strList = strList & Trim(Me.List1.List(i)) & " "
  7. End If
  8. Next i
  9. Dim MyData As DataObject
  10. Set MyData = New DataObject ' he aqui el error T_T
  11. MyData.Clear
  12. MyData.SetText Trim(strList)
  13. MyData.PutInClipboard
  14. End Sub
  15.  

El problema con el código es que me da el error siguiente:

Código:
Error de compilación,
El uso de la palabra clave New no es valido.

Pensaran que programar en VB6 es arcaico, pero tengo todo listo, solo me falta eso y no he podido solucionarlo, y he venido para ver si me pueden guiar :).-

De igual forma he probado añadiendo los items a un archivo .txt y copiarlos desde ahi, pero creo que es poco útil si de igual forma los tendré en el listbox.


Espero alguien me pueda ayudar. Saludos y gracias de ante mano :D
Páginas: [1] 2 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines