• Miércoles 14 de Mayo de 2025, 02:46

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Brroz

Páginas: 1 ... 19 20 [21] 22 23 ... 43
501
Visual Basic 6.0 e inferiores / Re: Codigo Para Años Bisiesto
« en: Jueves 11 de Marzo de 2004, 11:56 »
Hola companheir@s.

Ahí va otro, a ver si os gusta:

Código: Text
  1.  
  2. Public Function ComprobarBisiesto(ByVal intAño As Integer) As Boolean
  3. If DateDiff("d", "1/2/" & intAño,"1/3/" & intAño)=29 Then ComprobarBisiesto=True
  4. End Function
  5.  
  6.  

Abur.

502
Visual Basic 6.0 e inferiores / Re: Leer De Un Txt!!!
« en: Jueves 11 de Marzo de 2004, 11:51 »
Hola.

Necesitarás algo así:

Código: Text
  1.  
  2. Private Function ProcesarTxt(ByVal InputFile As String) As String
  3.  
  4.     On Error GoTo Err_Procesar
  5.    
  6.     Dim intCanal As Integer
  7.     intCanal = FreeFile
  8.     Open InputFile For Binary As intCanal
  9.    
  10.     Dim bytBufR() As Byte
  11.     ReDim bytBufR(LOF(intCanal))
  12.     Get #intCanal, , bytBufR
  13.        
  14.     Dim lng1 As Long
  15.     For lng1 = 0 To UBound(bytBufR)
  16.         If (bytBufR(lng1) < 91 And bytBufR(lng1) > 47) _
  17.         And (bytBufR(lng1) < 58 Or bytBufR(lng1) > 64) Then _
  18.         ProcesarTxt = ProcesarTxt & Chr(byBufR(lng1))
  19.     Next lng1
  20.    
  21. Exit_Procesar:
  22.     On Error Resume Next
  23.     Close #intCanal
  24.     Exit Function
  25.  
  26. Err_Procesar:
  27.     MsgBox "(" & Err.Number & ") " & Err.Description _
  28.     , vbCritical, "Procesar archivo txt"
  29.     Resume Exit_Procesar
  30.    
  31. End Function
  32.  
  33.  

Abur.

503
Visual Basic 6.0 e inferiores / Re: Leer De Un Txt!!!
« en: Jueves 11 de Marzo de 2004, 09:39 »
Hola Gandalf_malaga7.

Tal como lo cuentas, tus jefes tienen toda la razón... recorrer toda una tabla para buscar por cada registro en un archivo de texto, no es nada operativo (a no ser que tengas poquísimos registros y el archivo de texto sea pequeño, claro).

Lo que te apuntan de buscar un patrón para las matrículas y eliminar todo lo que no cuadre con ese patrón del archivo de texto, puede ser el camino, pero... ¿lo normal no sería que las matrículas aparecieran en determinadas posiciones del txt, o que incluso apareciese una sóla matrícula?¿El txt lo obtienes tú?

Por otro lado,si aparece más de una matrícula y si eliminas todos los carácteres y/o secuencias que pueden no aparecer en una matrícula, luego tendrás que identificar en lo que te quede las posibles matrículas, y se podrían dar casos como este:
PO3425ZA2332KM2344CC9999DCC2222AABC4355
(PO-3425-Z , A-2332-K , M-2344-C , C-9999-D , CC-2222-A , ABC4355)
Desde luego que no es un obstáculo insalvable, ni mucho menos, pero ve imaginando ya lo que tendría que hacer el proceso tras filtrar en el txt las posibles matrículas.

Todo esto te lo cuento sin haber descargado tus adjuntos, por lo que no sé si a lo mejor existe la posibilidad de que las matrículas aparezcan en determinadas posiciones fijas (en un campo de un registro, vaya) o que cierto/s carácter/es delimiten una matrícula. ¿Has examinado el txt para ver si se da alguna de estas posibilidades?

Suerte.

Chao.

504
Visual Basic 6.0 e inferiores / Re: Coneccion A Bd
« en: Jueves 11 de Marzo de 2004, 09:17 »
Hola Jorge López.

Pues supongo que no tendrás problemas para acceder a la bd como si fuese local: conecta la ubicación de la bd a una unidad de red, o accede a ella directamente mediante su localización...

Puedes referirte a ella como:
\\99.99.99.99\Ruta\base_de_datos.mdb
por ejemplo, donde por supuesto los nueves son la ip.

Si tienes una entrada para la ip del equipo en la que se encuentra la bd en el archivo hosts (o lmHosts) su ruta será:
\\Nombre_servidor\Ruta\base_de_datos.mdb.

Otra cosa es que luego tengas autorización adecuada para conectarte con  el recurso... Prueba a ver.

Suerte.

505
Visual Basic 6.0 e inferiores / Re: Refrescar El Data Después De Una Búsqueda
« en: Miércoles 10 de Marzo de 2004, 17:57 »
Hola Trazos.

Utiliza dos controles data distintos...

Chao.

506
Visual Basic 6.0 e inferiores / Re: Porfavor, Ayuda Para Voltear Una Cadena
« en: Miércoles 10 de Marzo de 2004, 16:21 »
Hola cucaracha.

El código que deberías utilizar sería algo asÍ:

Código: Text
  1.  
  2. Private Sub Voltear_Click
  3.     Dim frase As String, i As Integer
  4.     For i = Len(txtvoltear.text) To 1 Step -1
  5.         frase = frase & Mid(txtvoltear.text, i, 1)
  6.     Next i
  7.     txtvoltear.text=frase
  8. End Sub
  9.  
  10.  

Abur.

507
Visual Basic 6.0 e inferiores / Re: Problemas Con Msflexgrid
« en: Miércoles 10 de Marzo de 2004, 16:16 »
Hola rechy.

No he examinado a fondo tu codigo, pero...

Podrías usar el método AddItem, pero esto inserta una fila en el flexgrid. Lo que puedes hacer es controlar cuando te hace falta una nueva columna y añadirla en el momento: MsFlexGrid1.Cols=MsFlexGrid1.Cols + 1, en lugar de añadir todas las columnas previamente. Lo mismo podrías hacer con las filas.

Chao.

508
Visual Basic 6.0 e inferiores / Re: Guardar Una Pagina Web
« en: Miércoles 10 de Marzo de 2004, 16:09 »
Hola vradok.

Así de repente y sin profundizar más, se me ocurre que puedes probar con lo siguiente:

Utiliza un control DHTMLEdit para cargar la URL del webbrowser: DHTMLEdit1.LoadURL WebBrowser1.LocationURL luego podrás usar el método SaveDocument para guardar la página con el nombre que gustes...

A ver si por ese camino encuentras algo que te sirva, yo poco más te puedo ayudar, pero seguramente alguien en el foro te podrá ayudar más...

Suerte.

509
Visual Basic 6.0 e inferiores / Re: Decimal A Hexadecimal De Celulares
« en: Miércoles 10 de Marzo de 2004, 10:34 »
Hola emizael.

La solución es muy sencilla: concatenar los ceros que hagan falta por la izquierda del segundo hexadecimal.

Código: Text
  1.  
  2. Dim str1 as string, str2 as string
  3. str1 = Hex(Form1.Text1.Text)
  4. str2 = Hex(Form1.Text2.Text)
  5. str2 = string(8 - Len(str1)-len(str2),"0") & str2
  6. Form1.Text3.Text = str1 & str2
  7.  
  8.  

Suerte.

510
Visual Basic 6.0 e inferiores / Re: Leer De Un Txt!!!
« en: Martes 9 de Marzo de 2004, 16:44 »
Hola Gandalf_malaga7.

Si examinas el código te darás cuenta que no está pensado para utilizar comodines, sin embargo, no sería muy complicado hacer las modificaciones necesarias para que funcionara de tal forma. Ánimo.

Abur.

511
Hola Lia.

No conozco el grid que utilizas, pero para intentar solucionar lo que te pasa, prueba alguna de estas cosas:

- Añade DoEvents antes de ejecutar la llamada a 'RunFile'.

- Cuando haces click sobre un control, lo eventos que se desencadenan son varios (normalmente MouseDown, Click y MouseUp)... Puede ser que el control que usas actualice el contenido de la columna en un evento que ocurre después de click, por lo que el contenido de la columna al desencadenarse el evento click no es el que tu esperas... Indentifica los eventos que te proporciona el control, pues tal vez tengas que controlar el 'click' sobre la celda de otra forma...

Suerte.

512
Visual Basic 6.0 e inferiores / Re: Aplicaciones
« en: Martes 9 de Marzo de 2004, 15:16 »
HOLA RODOLFO.

PUEDES PROBAR USANDO LA INSTRUCCIÓN SHELL O LA FUNCIÓN API SHELLEXECUTE. EN ESTE MISMO FORO PUEDES ENCONTRAR VARIADOS EJEMPLOS.

ABUR.

513
Visual Basic 6.0 e inferiores / Re: Leer De Un Txt!!!
« en: Martes 9 de Marzo de 2004, 15:13 »
Hola Gandalf_malaga7.

Aquí te adjunto un ejemplo de una función que puede servir para lo que quieres:

Código: Text
  1.  
  2. Private Function BuscarCadenaEnArchivo(ByVal FilePathFileName As String, ByVal Cadena As String, Optional ByVal Desde As Long, Optional ByVal CaseSens As Boolean) As Long
  3.  
  4.     If Cadena = "" Then Exit Function
  5.  
  6.     On Error GoTo Err_Buscar
  7.  
  8.     Dim intCanal As Integer
  9.     intCanal = FreeFile
  10.     Open FilePathFileName For Binary As intCanal
  11.  
  12.     Dim bytBufR() As Byte
  13.     ReDim bytBufR(LOF(intCanal) - Desde)
  14.    
  15.     If Desde = 0 Then Desde = 1
  16.     Get #intCanal, Desde, bytBufR
  17.    
  18.     On Error Resume Next
  19.    
  20.     Dim lng1 As Long, int1 As Integer
  21.     Dim indEncontrado As Boolean, str1 As String
  22.     If CaseSens Then
  23.         For lng1 = 0 To UBound(bytBufR)
  24.             str1 = str1 & Chr(bytBufR(lng1))
  25.             If Right(str1, Len(Cadena)) = Cadena Then
  26.                 BuscarCadenaEnArchivo = lng1 - Len(Cadena) + Desde + 1
  27.                 Exit For
  28.             End If
  29.         Next lng1
  30.     Else
  31.         Cadena = UCase(Cadena)
  32.         For lng1 = 0 To UBound(bytBufR)
  33.             str1 = str1 & UCase(Chr(bytBufR(lng1)))
  34.             If Right(str1, Len(Cadena)) = Cadena Then
  35.                 BuscarCadenaEnArchivo = lng1 - Len(Cadena) + Desde + 1
  36.                 Exit For
  37.             End If
  38.         Next lng1
  39.     End If
  40.  
  41. Exit_Buscar:
  42.     On Error Resume Next
  43.     Close #intCanal
  44.     Exit Function
  45.  
  46. Err_Buscar:
  47.     MsgBox "(" & Err.Number & ") " & Err.Description _
  48.     , vbCritical, "Encontrar cadena"
  49.     Resume Exit_Buscar
  50.    
  51. End Function
  52.  
  53.  

Tan solo unas consideraciones:

La función recibe como parámetros el archivo en el que buscar, la cadena que hay que localizar (obligatorios), la posición a partir de la cual buscar y la opción de distinguir mayúsculas y minúsculas (opcionales). Devuelve un número que corresponde con la posición inicial de la cadena si se encuentra, o 0 en caso contrario.

Si el archivo en el que quieres buscar es muy grande, sería recomendable leer el archivo por partes, redimensionando la matriz bytBufR a un tamaño apropiado y realizando un ciclo con tantas instrucciones Get como fuesen necesarias para completar la longitud del fichero... esto queda para ti, que no se puede pedir todo hecho.

Habrás observado que los bucles se podrían resumir en uno sólo, integrando los if dentro del bucle... Esto último haría la búsqueda notablemente más lenta:
en muchas ocasiones prefiero escribir de más, incluso repitiendo fragmentos de código en sacrificio de un mejor rendimiento en la ejecución (evidentemente el bucle se ejecutará antes cuantas menos preguntas e instrucciones haya por el medio).

Eso es todo, espero que esto te sirva, mago malagueño.

Suerte.

514
Visual Basic 6.0 e inferiores / Re: Puerto Serial
« en: Martes 9 de Marzo de 2004, 09:11 »
Hola elmango80.

Puedes hacer pruebas abriendo, leyendo y escribiendo en el puerto como si se tratara de un archivo en disco. (OPEN "COM1" FOR INPUT AS canal, OPEN "COM1" FOR OUTPUT AS canal).

Suerte.

515
Hola Lia.

Si al hacer doble click sobre un archivo se abre con la aplicación que tiene asociada mediante su extensión, este mismo archivo se debería abrir de igual forma utilizando ShellExecute:

Código: Text
  1.  
  2.  Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  3. Private sub RunFile(Byval FilePathFileName as string)
  4.    ShellExecute 0&, "Open", FilePathFileName, "", "", 5&
  5. End Sub
  6.  
  7.  

Suerte.

516
Visual Basic 6.0 e inferiores / Re: Carga Proveedores De Datos En Windows95
« en: Viernes 5 de Marzo de 2004, 13:31 »
hola gquijorna.

Puedes probar ejecutando mdac_typ.exe. Este ejecutable lo puedes encontrar a partir de la carpeta en la que tienes instalado vb en \VB98\Wizards\PDWizard\Redist.

Otra opción es que empaquetes tu proyecto con el asistente para empaquetado y distribución de vb y uses el paquete para realizar la instalación.

Abur.

517
Visual Basic 6.0 e inferiores / Re: Identificador De Billetes
« en: Viernes 5 de Marzo de 2004, 13:25 »
Para aclarar un poco más la idea...

Abur.

518
Visual Basic 6.0 e inferiores / Re: Identificador De Billetes
« en: Viernes 5 de Marzo de 2004, 12:07 »
Claro está que para recorrer los puntos de la imagen y recuperar su color, deberás cambiar el ciclo, y en vez de usar el típico incrementando el valor para x o y mediante un bucle, deberás usar la ecuación de la recta en su forma explícita para según el valor de x, obtener  el valor para y, o viceversa.

También te prevengo que para una tarea de este estilo, tal vez deberías considerar usar algun lenguaje de más bajo nivel que VB, más que nada por un tema de rapidez...

Chao.

519
Visual Basic 6.0 e inferiores / Re: Identificador De Billetes
« en: Viernes 5 de Marzo de 2004, 12:01 »
Hola elmango80.

Sobre lo de las líneas... da igual que el billete esté torcido (hasta  cierto limite, claro). Las líneas no tienen porque ser horizontales o verticales, podría ser diagonales perfectamete, se trata de geometría pura. Considera el fondo sobre el que se fotografían los billetes como un sistema de coordenadas cartesianas, utilza la ecuación de la recta que pasa por dos puntos para hallar las rectas que corresponden a cada uno de los bordes y hallando los puntos de corte entre estas rectas, los vértices.

Puedes incluso simplificar este proceso si conoces las medidas del billete, indentificando sólamente dos rectas.

Suerte.

520
Visual Basic 6.0 e inferiores / Re: Ayuda Con Red Local
« en: Viernes 5 de Marzo de 2004, 10:02 »
Hola makisone.

Shell en este caso te devolverá el id de tarea, pero lo que hace Net View es mostrar en una pantalla dos los equipos conectados en tu grupo de trabajo. Evidentemente para recuperarlo en tu aplicación, por si no se te había ocurrido, es redireccionar la salida de Net View a un archivo de texto que luego podrás leer desde vb.

Chao.

521
Visual Basic 6.0 e inferiores / Re: Identificador De Billetes
« en: Viernes 5 de Marzo de 2004, 09:56 »
Hola elmango80.

Identificar los billetes me parece más o menos factible, pero comprobar que sean falsos o no... ya me parece casi imposible, a no ser que se trate de falsificaciones realmente chapuceras.

El tema del posible desplazamiento lo podrías corregir usando un color de fondo adecuado (blanco por ejemplo). Tendrías que identificar el cambio de color en dos líneas por cada lado del billete, luego identificar las rectas que por cada lado unirían los dos puntos en los que se ha producido el cambio de color... Cuando acabes este proceso obtendrás un rectácngulo que enmarca el billete, a partir de cuyos bordes podrías iniciar cualquier posible indentificación.

En lo relativo al cambio de color, puedes usar un intervalo para cada color rgb en el que se reconozca el color del billete, ya que el color suele variar bastante entre los diferentes valores.

Esto así es lo que se me ocurre a bote pronto.

Suerte.

522
Hola eli_moran.

Usa un código de este estilo:

Código: Text
  1.  
  2. Private Function ImportXls() as boolean
  3.  
  4.    On Error goto Err_Import
  5.  
  6.    Dim DB As Object
  7.    Set DB = GetObject("C:\Ruta\BaseDeDatos.mdb")
  8.  
  9.    Const AC_IMPORT = 0
  10.    Const AC_EXCEL97 = 8
  11.    
  12.    Dim indCabecera as boolean
  13.    indCabecera = True 'Indica si la primera fila
  14.                                      'contiene nombres de campo
  15.    DB.DoCmd.TransferSpreadsheet _
  16.         (AC_IMPORT, AC_EXCEL97, "NombreDeTabla" _
  17.         ,"C:\Ruta\HojaDeCalculo.xls", indCabecera)
  18.  
  19.    ImportXls = True
  20.  
  21. Exit_Import:
  22.     Db.Quit
  23.     Set Db=Nothing
  24.     Exit Function
  25.  
  26. Err_Import:
  27.     Msgbox Err.description
  28.     Resume Exit_Import
  29.  
  30. End Function
  31.  
  32.  

Con esto debería llegar. De todas formas, para TransferSpreadsheet, aun podrías especificar a más el rango de los datos que quieres importar. Te recomiendo que abras access, vayas a un módulo nuevo y compruebes los posibles valores para Docmd.TransferSpreadsheet.

Suerte.

523
Hola.

Para solucionar problemas de formatos, para mi lo más recomendable es utilizar dos hojas (o más, por supuesto) distintas en el mismo libre: una contendrá los datos puros y otra el formato. Los datos para la hoja formateada se actualizarán mediante los correspondientes vínculos a la hoja con los datos. La hoja de datos será la que se actualice...

Suerte.

524
Visual Basic 6.0 e inferiores / Re: Asignar Un Indice Automaticamente
« en: Jueves 4 de Marzo de 2004, 15:54 »
Hola analaura.

Si usas la búsqueda en este foro, puedes encontrar temas como este:
http://foros.solocodigo.com/index.php?showtopic=4503

Abur.

525
Visual Basic 6.0 e inferiores / Re: Format "mask Edit"
« en: Jueves 4 de Marzo de 2004, 15:45 »
Hola irma3030.

No se si capto muy bien tu problema... entiendo que a partir de un texto de un textbox quieres almacenar por un lado un valor numérico y por otro la posición de cierto carácter (en tu caso /). Para hacer esto se me ocurre algo así:

Utilizaría un  textbox corriente y moliente, y presupongo que la posición en la puede aparecer el carácter / es variable, así como el número de veces que aparecerá.

Imagina un formulario con dos TextBox: uno (Text1) recogería la entrada del usuario, otro (Text2), mostrará la reconstrucción de la entrada del usuario. Dos CommandButton, uno almacena la entrada del usuario, y otro la reconstruye...

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private dblValor As Double
  5. Private strPos As String
  6.  
  7. Private Sub Text1_KeyPress(KeyAscii As Integer)
  8.    
  9.     ' Chr(47)="/" , Chr(48) al Chr(57)="0123456789"
  10.     If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0
  11.  
  12. End Sub
  13.  
  14. Private Sub Command1_Click()
  15.    
  16.     dblValor = Val(Replace(Text1.Text, "/", ""))
  17.     strPos = ""
  18.    
  19.     Dim int1 As Integer, intIdx As Integer
  20.     int1 = InStr(int1 + 1, Text1.Text, "/")
  21.     Do While int1 > 0
  22.         strPos = strPos & int1 & ","
  23.         int1 = InStr(int1 + 1, Text1.Text, "/")
  24.     Loop
  25.     int1 = Len(strPos)
  26.     If int1 > 0 Then strPos = Left(strPos, int1 - 1)
  27.    
  28.     MsgBox "Almacenar " & dblValor & " por un lado" & vbCrLf _
  29.     & "y " & strPos & " por otro"
  30.    
  31. End Sub
  32.  
  33. Private Sub Command2_Click()
  34.    
  35.     Dim var1 As Variant
  36.     var1 = Split(strPos, ",")
  37.     Dim int1 As Integer, str1 As String, str2 As String
  38.     str1 = CStr(dblValor)
  39.     For int1 = 0 To UBound(var1)
  40.         str1 = Left(str1, var1(int1) - 1) & "/" & Mid(str1, var1(int1))
  41.     Next int1
  42.     Text2.Text = str1
  43.    
  44. End Sub
  45.  
  46.  

Mira el código y saca tus conclusiones, la imaginación es una herramienta de programación muy poderosa...

Suerte.

Páginas: 1 ... 19 20 [21] 22 23 ... 43