|
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 - Juanolo
26
« en: Martes 13 de Septiembre de 2005, 18:47 »
Hola, Visual, para esto, tiene la función FileCopy FileCopy "C:\cesar\Archivo.jpg", "D:\Fotos\Archivo.jpg"
Otra opción es usar la función Api CopyFile. La ventaja, es que la anterior no funciona cuando el archivo está abierto y puede dar errores. Para utilizarla, primero debes declararla. En el caso del ejemplo, se hizo en un módulo para hacerla pública. Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Se usa en forma muy similar. CopyFile "C:\cesar\Archivo.jpg", "D:\Fotos\Archivo.jpg",0
el último parámetro (0) es para que copie a pesar de estar el archivo bloqueado. Bueno, espero te sirva. Salu2.
27
« en: Martes 13 de Septiembre de 2005, 15:38 »
Hola Sagutxo! Para saber si existe el fichero, yo uso la siguiete funcioncilla, alojada en algún módulo: Public Function ExisteArchivo(ArchTmp As String) As Boolean If Len(Dir$(ArchTmp)) = 0 Then ExisteArchivo = False Else ExisteArchivo = True End If End Function
Y la utilizo: If ExisteArchivo(Base_050913_1.zip) then ... End If
Sé que no responde a tu pregunta específica, pero quizás te pueda servir. Salu2.
28
« en: Martes 13 de Septiembre de 2005, 06:06 »
Hola! Bienvenido al foro. Espero lo aproveches. He pasado por muchos foros, pero me quedo con este. La buena disposición de los compañeros es incomparable, y difícilmente te encontrarás con mensajes basura de esos que tanto desaniman a quien tiene una legítima duda. Respecto a tu tema, no lo manejo a cabalidad, pero te recomiendo visitar este link, que te dirigirá a una discusión anterior. Discusión anterior sobre excelSi utilizas la búsqueda del foro, darás con muchos ejemplos como este. Salu2.
29
« en: Lunes 12 de Septiembre de 2005, 05:39 »
Bueno, si insistes en meter una imagen en la BD, te recomiendo seguir el consejo de saqutxo y revisar el post Guardar imagen en DB acces 97, un poco más abajo. Se hace a través de un objeto Ole, al menos así lo encontrarás en la base de datos "Neptuno", que viene con Access, en donde guarda la imagen de los empleados. A saqutxo le enviaron un par de ejemplos, que, por lo que dice, le solucionaron el problema.
Suerte!
30
« en: Domingo 11 de Septiembre de 2005, 03:08 »
Hola! Si esta respuesta aparece más de una vez, te pido disculpas. Estoy teniendo problemas con la conexión. Efectivamente, mi experiencia me dice que no es buena idea guardar imágenes en la base de datos. Es difícil de manejar y se infla a más no poder. Te recomiendo bajar y analizar el siguiente código.
Salu2.
31
« en: Martes 23 de Agosto de 2005, 01:11 »
Hola! Primero que nada, me parece buena la idea de poner como imagen de fondo un escaneo del original, se ve bien y es amigable para el usuario... Pero, si quieres imprimir el form:
Te imprimirá todo, icluida la imagen y botones y cuanto control encuentre. La impresión de form es de mala calidad. Tengo mis dudas respecto al tamaño en que saldrá la impresión.
Respecto a las otras opciones:
Crystalreports no es mala, pero será una jalea intentar encuadrarse. Por otro lado (no se como estará eso en las versiones actuales) yo tengo el crystal que venía con Visual 5.0 y cambia las posiciones al cambiar el modelo de impresora.
Lo mejor es usar el objeto printer. No tengo código a mano, pero es lo que he usado para formularios preimpresos con muy buenos resultados. Es un poco complicado al principio, pero una vez que te entusiasmas... Es un simple sistema de coordenadas. Le indicas la posición x e y y le indicas lo que quieres imprimir. Algo así como:
printer.CurrentX = 2 printer.currentY = 10 printer.print "Hola Mundo"
si has determinado la escala en cms, te imprimirá "Hola mundo" a 10 cms desde el tope de la página y a 2 desde la izquierda. Tiene muchas propiedades que hacen más interesante la impresión: la escala mencionada, tipo de letra, tamaño, papel a usar, etc.
Espero andar trayendo algo de código la proxima vez que entre a un ciber, a ver si te puedo ayudar más.
Salu2.
32
« en: Martes 23 de Agosto de 2005, 00:52 »
Hola Yothamons!
Código a mano no tengo, pero si algunas indicaciones que te pueden ayudar. Debes partir por comprender el uso del control mscomm, viene un ejemplo bastante bueno con visual basic. Hecho esto, habrás comprendido que estos aparatos (balanzas, centrales telefónicas, etc...) generalmente se comunican enviando una cadena de caracteres a través del puerto serial, y que ese se puede capturar cuando se produzca el evento de que el buffer reciba la cadena, y que se detecta con OnEvents (al ver el ejemplo te quedará más claro). Una vez que tengas la cadena, probalemente te encontrarás con que en ella viene más información que la que deseabas. Entonces, debes determinar en que posición está lo que buscas y capturarlo (la función Mid() se presta para estos casos. Está bien, reconozco que la respuesta no es muy específica, pero la pregunta tampoco lo es. Bucea un poco en el ejemplo de visual, y seguro te podremos ayudar en forma más concreta.
Mantén el contacto.
Salu2.
33
« en: Lunes 1 de Agosto de 2005, 21:45 »
Pues con esto de los números de error no tengo buena memoria, pero los síntomas me son familiares. Yo solucioné el problema descargando la última versión de Mdactype (o algo por la onda) de la página de Microsoft e instalandola en la máquina con problemas. Hasta donde entendí en mi investigación, aquí está la conectividad de Windows con las bases de datos y otras yerbas. También hay otro paquete que se puede bajar (Dcom98, creo que se llamaba). Pero como te digo, mi memoria es frágil y al final me funcionó de tanto apretarle teclas, aunque no recuerdo cuales.
Salu2.
34
« en: Martes 26 de Julio de 2005, 22:00 »
Hummmm! No he hecho un post grado respecto al tema, pero en lo que a tí te interesa la principal diferencia es: Propiedad stretch (o algo así) del imagecontrol. Si esta propiedad tiene el valor 'True', ajustará la imagen que contenga para adecuarse a los nuevos límites del control. Eso NO LO TIENE un picturebox, que se limita a contener la imagen en el tamaño y formato en que venga. Luego, si quieres redimensionar, picture no es tu tipo. Me voy en busca de un post que subí hace un tiempo, si lo encuentro, edito y te cuento.- Edición:Busca en este link Discusión ImágenesAhí subí un código en el que jugaba un poco mezclando las características de in picture y un image para mostrar las imágenes sin que se distorsionaran (un problemilla que tiene el stretch) Salu2
35
« en: Viernes 15 de Julio de 2005, 01:08 »
Debes agregar una sección 'Dirs', con la siguiente sintaxis: [Dirs] Name: "c:\Archivos de Programa\MyPrograma\BD"
También debería funcionar así: [Dirs] Name: "{app}\BD"
De esta forma te aseguras que la carpeta se cree en el directorio de la aplicación sin importar en donde la instale el usuario. Salu2.
36
« en: Miércoles 13 de Julio de 2005, 16:55 »
Hola! Aunque no uso comunmente el DataReport, tengo alguna idea de lo que te sucede. Cuando abres un datareport, este abre el Recordset (o command) que utilizará y lo deja así. Si buscas en el foro encontrarás muchas preguntas al respecto. La solución es cerrar el Recordset o command una vez que haz mostrado el reporte. Otra posibilidad (el ejemplo es para dataenvironment, pero puedes entender de que se trata) es verificar si el recordset está abierto antes de enviar el informe, y, si es así, cerrarlo: if dataenvironment1.rscommand1.state= adstateopen then dataenvironment1.rscommand1.close end if datareport1.show
Espero soluciones tu problema. Salu2.
37
« en: Miércoles 13 de Julio de 2005, 16:37 »
Bien.
Lo que yo creo es que si no están en es lst no los necesitas y los puedes borrar con tranquilidad. Lo más probable es que estés usando como plantilla un archivo sript en donde se mencionan. Por otro lado, si no están en tu sistema y la aplicación funciona correctamente CLARAMENTE NO LOS NECESITAS. Borralos del Script con tranquilidad.
Salu2.
38
« en: Lunes 11 de Julio de 2005, 15:30 »
Extraño!!
Pues, si tienes el setup.lst, lo que te puedo recomendar es que lo abras con cualquier procesador de texto y busques ahí los archivos que te causan duda.
Si no están, no los necesitas. Pero, a qué te refieres con que lo hiciste a partir del Lst? Utilizaste InnoScript?
Si es así, y están en el Lst, puede que sí los necesites. Lo que pasa es que el InnoScript a veces se pone un poco tonto al buscar y no encuentra lo que está bajo sus narices. Ahora, si no están en el Lst, puede que estés usando como base un archivo Inno en donde sí están. De ser este el caso, puedes revisar lo siguiente: Cuando creas un Script a partir de un archivo tipo, InnoScript juntará en la sección files todos los archivos utilizados, pero dejará al final, y sin tocar, aquellos archivos que estando en la plantilla no son aparentemente necesarios para la aplicación.
Bueno, ojalá te sirva; pero tengo mis dudas pues debí suponer muchas cosas.
Salu2.
39
« en: Martes 5 de Julio de 2005, 23:10 »
Bueno, ya te había dicho que sin Visual pa que me corrija cometo equivocaciones. Primero, me faltaba declarar 'Sleep', que es API... y otras pequeñas cosillas para que funcione como yo quería. Así es que te incluyo un nuevo código con el que me estuve entreteniendo. Te adjunto, además, el proyecto, por si quieres probar como funciona la idea sin tener que darte la lata de copiar y pegar (je). Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Command1_Click() Dim Lni As Integer Dim lsLetra As String Dim lsFrase As String Text1.SetFocus Screen.MousePointer = vbHourglass lsFrase = Text1.Text For Lni = 1 To Len(lsFrase) Step 1 lsLetra = Mid(lsFrase, Lni, 1) 'Un pequeño lujillo, pa que vaya marcando la letra que está leyendo. 'También la podrías mostrar en una etiqueta... Pero nada de esto es necesario. Text1.SelStart = Lni - 1 Text1.SelLength = 1 If lsLetra = " " Then Sleep 500 ' Para separar palabras Else msTratarLetra lsLetra Sleep 300 'Para separar códigos entre letras End If Next Lni Screen.MousePointer = vbDefault End Sub Private Sub Destellar(CodDestello As String) Dim i As Integer, MlEsperar As Integer For i = 1 To Len(CodDestello) If Mid(CodDestello, i, 1) = "0" Then MlEsperar = 150 'Espera 150 milisegundos manteniendo el Shape blanco Else MlEsperar = 300 'Espera el Doble (Raya. El anterior era Punto) End If 'Hago Destellar por el tiempo que corresponda Sleep MlEsperar 'Para que se mantenga el negro el tiempo suficiente Shape1.BackColor = vbWhite 'Blanco Beep DoEvents 'Necesario para que se muestre en el formulario Sleep MlEsperar Shape1.BackColor = vbBlack 'Negro (vuelve al color original) DoEvents Next i End Sub Private Sub msTratarLetra(lsLetra As String) 'Primero pongo la letra en mayúscula para una fácil comparación lsLetra = UCase(lsLetra) Select Case lsLetra Case "A" Destellar "01" Case "B" Destellar "1000" Case "C" Destellar "1010" Case "D" Destellar "100" Case "E" Destellar "0" Case "F" Destellar "0010" Case "G" Destellar "110" Case "H" Destellar "0000" Case "I" Destellar "00" Case "J" Destellar "0111" Case "K" Destellar "101" Case "L" Destellar "0100" Case "M" Destellar "11" Case "N" Destellar "10" Case "O" Destellar "111" Case "P" Destellar "0110" Case "Q" Destellar "1101" Case "R" Destellar "010" Case "S" Destellar "000" Case "T" Destellar "1" Case "U" Destellar "001" Case "V" Destellar "0001" Case "W" Destellar "011" Case "X" Destellar "1001" Case "Y" Destellar "1011" Case "Z" Destellar "1100" End Select End
Salu2 Pd: Aquí va el código... Espero que subas o me envíes al correo el proyecto terminado.
40
« en: Martes 5 de Julio de 2005, 18:48 »
Hola, Joselito. Me parece muy interesante tu idea..., y entusiasmante a la vez. Siento no tener un Visual cerca, pues como soy sólo un aficionado, mi código podría no resultar exacto sin que Visual me esté recordando mis errores. Bueno, mi aporte es el siguiente (si gustas): 1º, me quedo con la primera parte del código de Shiquilla con una pequeña corrección para el caso de los espacios separadores de palabras. Es decir: Dim lnI As Integer Dim lsLetra As String Dim lsFrase As String lsFrase = Text1.Text For lnI = 1 To Len(lsFrase) Step 1 lsLetra = Mid(lsFrase, lnI, 1) if lsLetra=" " then Sleep 500 Else msTratarLetra lsLetra Endif Next lnI
Notas: Esto es para el caso de que quieras traducir una cadena que ya està en un TextBox. Si quieres traducir a medida que presionas las letras necesitas usar KeyPress; pero creo que esto esta bien. Tengo dudas con la funciòn Sleep (o Wait.., o algo así; como te explicaba, no tengo un visual cerca). Lo que pretendo que haga es esperar 500 milisegundos antes de continuar con la siguiente instrucción. Lo que cambiaría sería el procedimiento msTratarletra. Pero antes, agregaremos el siguiente procedimiento para manejar destellos: Private sub Destellar(CodDestello as String) Dim i as integer, MlEsperar as integer For i=1 to len(CodDestello) if mid(CodDestello,i,1)="0" then MlEsperar=150 'Espera 150 milisegundos manteniendo el Shape blanco Else MlEsperar=300 'Espera el Doble (Raya. El anterior era Punto) Endif 'Hago Destellar por el tiempo que corresponda 'Tomando tu idea del Shape Shape.FillColor=vbWhite'Blanco Sleep MlEsperar Shape.FillColor=vbBlack 'Negro (vuelve al color original) Next i End Sub
Donde CodDestellos es una cadena de 0s y 1s que indicará si se trata de un Punto o una Raya. Así, por ejemplo, una S sería "000", una O serìa "111" (Dije POR EJEMPLO, no sé Morse) Ahora retomamos la funciòn msTratarLetra: Private Sub msTratarLetra(lsLetra As String) Select Case lsLetra Case "S" Destellar "000" Case "O" Destellar "111" 'Etcètera End Select
Nota que al asignar 0s y 1s te evitas.... Espero que sirva al menos como idea. A mi tu pregunta me ha servido pa' sacudir un poco las neuronas. Salu2. Pd: En cuanto tenga tiempo lo intento.
41
« en: Sábado 2 de Julio de 2005, 19:19 »
Saludos, Shiquilla.
42
« en: Sábado 2 de Julio de 2005, 19:16 »
Hola: Lo que veo es lo siguiente: w = Mid(sFrase, 1, h) Si sólo quieres leer un caracter, debe ser: Es de esos momentos en que los árboles no dejan ver el bosque. Salu2.
43
« en: Viernes 1 de Julio de 2005, 17:20 »
Hola Diablo Rojo: Sin duda que darle la propiedad picture al Mdi es lo más fácil y rápido. Sin embargo, alguna vez vi que alguien localizaba un logo en el centro de la pantalla y parecía estar incrustado en el Mdi. Lo que hacía, era crear un formulario MdiChild sin bordes ni controles, poner ahí la imagen que quería mostrar centrándolo en la pantalla. Lo abría al iniciar la aplicación y no se acordaba de él hasta cerrarla. Ahora, si abres este Child maximizado, tienes lo que quieres.
Salu2.
44
« en: Viernes 1 de Julio de 2005, 17:11 »
Hola a todos! Alguna vez había visto ese código y, por supuesto, me pareció muy interesante a primera vista. Pero...: hay que numerar las líneas. Bueno, hasta ahí me llegó el entusiasmo; pues me resultaba más fácil desactivar temporalmente el 'On Error Goto...' y Visual hacía el resto deteniendo el programa en la línea con error, haciendo ruido, marcando el error con resalte, etc... Si alguien sabe una forma de aprovechar esto de una forma menos aparatosa, por favor que lo postee.
Salu2.
45
« en: Sábado 25 de Junio de 2005, 16:30 »
Hola Kurt! Aunque creo que ya lo debes tener solucionado, nunca está de más otra opción. Puedes lograr lo mismo usando la función Format() aplicada a la fecha que quieras mostrar. Algo así:
Dim DiaSem as String DiaSem=Format(Date, "dddd")
Salu2.
46
« en: Viernes 24 de Junio de 2005, 22:01 »
A lo mismo:
Que bien que esta solución te haya servido, pero hay casos en los que no. Por ejemplo, cuando la base de datos está ubicada en una posición distinta de la aplicación. O, peor aún, cuando el usuario puede mover y determinar la ubicación, o usar distintas bases de datos.
Crystal tiene la propiedad DataFiles(Indice) que le puede indicar en tiempo de ejecución donde está la base de datos que contiene la tabla a listar. Así, si nuestro objeto Crystal se llama CR (por ejemplo), se le puede decir:
CR.Datafiles(0)= "F:\Bases\Bases.mdb"
Espero que a alguien le sirva.
Salu2.
47
« en: Miércoles 15 de Junio de 2005, 21:29 »
Gracias Shiquilla! Me lo llevo para ver si lo puedo probar el fin de semana. Si aprendo algo, lo postearé.
Salu2.
48
« en: Miércoles 15 de Junio de 2005, 00:54 »
Pues bien, DJ LU.
¡TIENES MUCHA RAZON!
Probé el código en XP y me dio el mismo error que a tí. El problema es que ya me había entusiasmado con la idea, pues lo quería usar para proteger mis aplicaciones autorizando un ID determinado de Disco Duro. El problema con GetVolume... es que al formatear el disco cambia. He revisado las funciones de Api que me han parecido, pero no he dado con nada como lo que hacía esta aplicación en Win98.
Si alguien nos puede ayudar, tantas gracias.
49
« en: Miércoles 18 de Mayo de 2005, 22:02 »
Hola!
Tu problema, como se menciona más arriba, es que por seguridad las ùltimas versiones de Inno no permiten tomar archivos directamente del System32.
Claro, si lo quieres hacer, siempre hay un truco: Debes agregar el flag allowunsafefiles (permitir archivos inseguros) en aquellas lineas del script en que estén, en tu caso:
Source: "C:\WINDOWS\system32\Crpaig80.dll"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: sharedfile allowunsafefiles
Chau.
50
« en: Viernes 13 de Mayo de 2005, 01:23 »
Hola!
Son ambas bases de datos de la misma versión? Puede que una sea Access 97 y la otra Access 2000, por ejemplo?
Si así fuera, debes corregir el Dataenvironment a la conección correcta.
Chau!
|
|
|