|
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
« en: Jueves 11 de Marzo de 2004, 11:56 »
Hola companheir@s. Ahí va otro, a ver si os gusta: Public Function ComprobarBisiesto(ByVal intAño As Integer) As Boolean If DateDiff("d", "1/2/" & intAño,"1/3/" & intAño)=29 Then ComprobarBisiesto=True End Function
Abur.
502
« en: Jueves 11 de Marzo de 2004, 11:51 »
Hola. Necesitarás algo así: Private Function ProcesarTxt(ByVal InputFile As String) As String On Error GoTo Err_Procesar Dim intCanal As Integer intCanal = FreeFile Open InputFile For Binary As intCanal Dim bytBufR() As Byte ReDim bytBufR(LOF(intCanal)) Get #intCanal, , bytBufR Dim lng1 As Long For lng1 = 0 To UBound(bytBufR) If (bytBufR(lng1) < 91 And bytBufR(lng1) > 47) _ And (bytBufR(lng1) < 58 Or bytBufR(lng1) > 64) Then _ ProcesarTxt = ProcesarTxt & Chr(byBufR(lng1)) Next lng1 Exit_Procesar: On Error Resume Next Close #intCanal Exit Function Err_Procesar: MsgBox "(" & Err.Number & ") " & Err.Description _ , vbCritical, "Procesar archivo txt" Resume Exit_Procesar End Function
Abur.
503
« 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
« 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
« en: Miércoles 10 de Marzo de 2004, 17:57 »
Hola Trazos.
Utiliza dos controles data distintos...
Chao.
506
« en: Miércoles 10 de Marzo de 2004, 16:21 »
Hola cucaracha. El código que deberías utilizar sería algo asÍ: Private Sub Voltear_Click Dim frase As String, i As Integer For i = Len(txtvoltear.text) To 1 Step -1 frase = frase & Mid(txtvoltear.text, i, 1) Next i txtvoltear.text=frase End Sub
Abur.
507
« 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
« 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
« 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. Dim str1 as string, str2 as string str1 = Hex(Form1.Text1.Text) str2 = Hex(Form1.Text2.Text) str2 = string(8 - Len(str1)-len(str2),"0") & str2 Form1.Text3.Text = str1 & str2
Suerte.
510
« 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
« en: Martes 9 de Marzo de 2004, 16:41 »
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
« 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
« 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: Private Function BuscarCadenaEnArchivo(ByVal FilePathFileName As String, ByVal Cadena As String, Optional ByVal Desde As Long, Optional ByVal CaseSens As Boolean) As Long If Cadena = "" Then Exit Function On Error GoTo Err_Buscar Dim intCanal As Integer intCanal = FreeFile Open FilePathFileName For Binary As intCanal Dim bytBufR() As Byte ReDim bytBufR(LOF(intCanal) - Desde) If Desde = 0 Then Desde = 1 Get #intCanal, Desde, bytBufR On Error Resume Next Dim lng1 As Long, int1 As Integer Dim indEncontrado As Boolean, str1 As String If CaseSens Then For lng1 = 0 To UBound(bytBufR) str1 = str1 & Chr(bytBufR(lng1)) If Right(str1, Len(Cadena)) = Cadena Then BuscarCadenaEnArchivo = lng1 - Len(Cadena) + Desde + 1 Exit For End If Next lng1 Else Cadena = UCase(Cadena) For lng1 = 0 To UBound(bytBufR) str1 = str1 & UCase(Chr(bytBufR(lng1))) If Right(str1, Len(Cadena)) = Cadena Then BuscarCadenaEnArchivo = lng1 - Len(Cadena) + Desde + 1 Exit For End If Next lng1 End If Exit_Buscar: On Error Resume Next Close #intCanal Exit Function Err_Buscar: MsgBox "(" & Err.Number & ") " & Err.Description _ , vbCritical, "Encontrar cadena" Resume Exit_Buscar End Function
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
« 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
« en: Martes 9 de Marzo de 2004, 09:05 »
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: 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 Private sub RunFile(Byval FilePathFileName as string) ShellExecute 0&, "Open", FilePathFileName, "", "", 5& End Sub
Suerte.
516
« 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
« en: Viernes 5 de Marzo de 2004, 13:25 »
Para aclarar un poco más la idea...
Abur.
518
« 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
« 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
« 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
« 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
« en: Viernes 5 de Marzo de 2004, 09:45 »
Hola eli_moran. Usa un código de este estilo: Private Function ImportXls() as boolean On Error goto Err_Import Dim DB As Object Set DB = GetObject("C:\Ruta\BaseDeDatos.mdb") Const AC_IMPORT = 0 Const AC_EXCEL97 = 8 Dim indCabecera as boolean indCabecera = True 'Indica si la primera fila 'contiene nombres de campo DB.DoCmd.TransferSpreadsheet _ (AC_IMPORT, AC_EXCEL97, "NombreDeTabla" _ ,"C:\Ruta\HojaDeCalculo.xls", indCabecera) ImportXls = True Exit_Import: Db.Quit Set Db=Nothing Exit Function Err_Import: Msgbox Err.description Resume Exit_Import End Function
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
« en: Jueves 4 de Marzo de 2004, 15:58 »
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.
525
« 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... Option Explicit Private dblValor As Double Private strPos As String Private Sub Text1_KeyPress(KeyAscii As Integer) ' Chr(47)="/" , Chr(48) al Chr(57)="0123456789" If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0 End Sub Private Sub Command1_Click() dblValor = Val(Replace(Text1.Text, "/", "")) strPos = "" Dim int1 As Integer, intIdx As Integer int1 = InStr(int1 + 1, Text1.Text, "/") Do While int1 > 0 strPos = strPos & int1 & "," int1 = InStr(int1 + 1, Text1.Text, "/") Loop int1 = Len(strPos) If int1 > 0 Then strPos = Left(strPos, int1 - 1) MsgBox "Almacenar " & dblValor & " por un lado" & vbCrLf _ & "y " & strPos & " por otro" End Sub Private Sub Command2_Click() Dim var1 As Variant var1 = Split(strPos, ",") Dim int1 As Integer, str1 As String, str2 As String str1 = CStr(dblValor) For int1 = 0 To UBound(var1) str1 = Left(str1, var1(int1) - 1) & "/" & Mid(str1, var1(int1)) Next int1 Text2.Text = str1 End Sub
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
|
|
|