|
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 ... 14 15 [16] 17 18 ... 43
376
« en: Lunes 10 de Mayo de 2004, 17:19 »
Hola adelarodri. Prueba usando el método Requery del objeto Recordset del supuesto control data que estás usando: Chao.
377
« en: Lunes 10 de Mayo de 2004, 17:17 »
Hola.
Una sentencia SQL utiliza los índices que la tabla tenga creados segun los campos por los que realice una selección y/o agrupación, y/o unión. Es decir, por ejemplo si en una cláusula where comparas por un campo que tiene un índice creado y por otro que no lo tiene, para el segundo se construye en el momento una vía de acceso, con la consiguiente demora en la consulta. Si el número de registros en la tabla es pequeño esta demora no será significativa, pero en otro caso... Otro caso (y tal vez en el que más se puede notar la diferencia) en el que tener creado adecuadamente índices es importante es cuando la sentencia SQL cuenta con tablas unidas mediante JOIN, LEFT JOIN, INNER JOIN, etc, ... Si los campos de unión están indexados mejor que mejor.
Abur.
378
« en: Jueves 29 de Abril de 2004, 10:04 »
Hola.
Infórmate acerca de la propiedad NegotiateToolbars del form MDI. Ten también en cuenta que no tienes por que hacer que el resto de los formularios sean todos MDIChild, también puedes usar forms NO MDIChild abiertos como modales.
379
« en: Jueves 29 de Abril de 2004, 10:00 »
Hola chryobcn.
¿De verdad piensas que usar windowstate es una chapuza?... pues no sé que será más chapucero: usar ese método inhabilitando el MaxButton, o tener una aplicación MDI todo el rato maximizada...
Abur.
380
« en: Jueves 29 de Abril de 2004, 09:44 »
Hola ebolo.
Yo para estas cosas suelo utilizar un FlexGrid. Para mi usar un listview como un grid para visualizar datos de una tabla tiene un claro inconveniente: desperdicias la potencia que tiene el control (ten en cuenta que sólo utilizas la vista 'report'), potencia que provoca que sea un control más pesado que un flexgrid. Ahora, para gustos hay colores.
Por otro lado, y completando un poco el tema: los combobox tienen una propiedad llamada ItemData que permiten asociar un valor (tipo long) a cada item del combo, lo cual puede dar muchísimo juego...
Suerte.
381
« en: Jueves 29 de Abril de 2004, 09:37 »
Hola jpardo84. Private Sub Command1_Click() Dim str1 As String, int1 As Integer str1 = CurrentDb.Name 'Con vba de access no dispones de InStrRev , una pena... For int1 = Len(str1) To 1 Step -1 If Mid(str1, int1, 1) = "\" Then Exit For Next int1 str1 = Left(str1, int1) MsgBox str1 End Sub
Abur.
382
« en: Jueves 29 de Abril de 2004, 09:32 »
Este se me escapó y no lo puedo eliminar...
383
« en: Miércoles 28 de Abril de 2004, 09:19 »
Gracias por el aporte blade72.
385
« en: Miércoles 28 de Abril de 2004, 09:13 »
Hola jpardo84.
La forma que conozco para obtener el path de la base de datos es a través del objecto CurrentDb. La propiedad Name proporciona el nombre con la ruta completa de la base de datos, por lo que como imagino por lo que dices que lo que necesitas es el nombre y ubicación de la bd, no necesitas hacer nada más. Si sólo necesitaras recuperar la ruta, necesitarías hacer una muy sencilla función para recuperarla.
Suerte.
386
« en: Miércoles 28 de Abril de 2004, 09:07 »
Hola Leon. Para cerrar windows puedes usar un código así: Option Explicit Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Public Sub CerrarWindows() End ExitWindowsEx 1, 0 End Sub
Como bloquear el equipo adecuadamente es otro tema y si no me equivoco puede depender en parte de la versión SO que utilizas... En este mismo foro creo que hay varias discusiones acerca de este tema. Suerte.
387
« en: Martes 27 de Abril de 2004, 14:44 »
Hola paisano.
Puedes seguir varios caminos:
- Tener una unidad asignada al recurso de red. La ruta de la bd seria similar a si estuviera en local, por ejemplo Set mb = OpenDatabase("u:/CarpetaCompartida/bd.mdb"). Puedes realizar la conexión con la unidad manualmente, manualmente indicando que se restaure la conexión al iniciar (sólo lo tendrías que hacer una vez), o mediante el comando Net Use.
- Referirse al equipo que tiene la bd por su ip o por su posible nombre de dominio:
por su ip: \\999.999.999.999\CarpetaCompartida\db.mdb
o si tienes una entrada para la ip en el archivo hosts (o lmHosts, asegún), asociandola a un nombre para el equipo: \\NombreEquipo\CarpetaCompartida\db,mdb
Abur.
389
« en: Martes 27 de Abril de 2004, 10:50 »
Me sumo a las felicitaciones. Enhorabuena por el chollo...
390
« en: Martes 27 de Abril de 2004, 10:44 »
Hola.
Mi voto va para Nicokiki y Bob.
Ya que salió el tema, para satisfacer curiosidades, mi avatar corresponde a un detalle de una 'estatua-menhir' fechada como de la edad del bronce? conocida como La Cabeza de San Pedro (esa costumbre que tenían de cristianizar todo... es muy triste que muchas poblaciones pierdan su topónimo original en favor de su santo patrón, por el que son sistemáticamente nombradas...). El monumento se encuentra situado en Rebón (Moraña, Pontevedra), en una fuerte pendiente sobre el 'regato' Xundeiro, completamente olvidado en medio de un eucaliptal...
Abur.
391
« en: Martes 27 de Abril de 2004, 10:09 »
Hola giomar.
SourceSafe permite llevar control sobre cambios y control de versiones en el código fuente. Debe ser especialmente útil en entornos de trabajo cooperativos en los que varias personas mantienen las aplicaciones. Personalmente nunca lo he utilizado, pues yo me lo guiso y yo me lo como...
Suerte.
392
« en: Martes 27 de Abril de 2004, 10:04 »
Hola pippin.
No sé si se podrán seleccionar las páginas a imprimir de un informe access desde código, pero tal vez soluciones el tema aplicando el filtro adecuado a los datos del informe. En este mismo foro hay ejemplos de cómo utilizar un informe access desde vb.
Suerte.
393
« en: Martes 27 de Abril de 2004, 10:00 »
Hola KHARTER.
En este foro, ve a la parte inferior de la página y donde dice 'Buscar en este foro', introduce la palabra Printer. Verás la de resultados que obtienes...
Suerte.
394
« en: Martes 27 de Abril de 2004, 09:56 »
Hola elburrow. No sé si te he comprendido muy bien... Hablas de terminar un proceso sin tener que lanzarlo, pero luego en el código que adjuntas, el proceso es lanzado mediante shell. Fíjate a ver si algo de esto a ver si te sirve. El código ejecuta un proceso y después de 1 minuto, si no ha finalido se fuerza la finalización: Private Const STILL_ACTIVE = &H103 Private Const PROCESS_QUERY_INFORMATION = &H400 Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Private sub Prueba Dim lng1 As Long, lngRc As Long lng1 = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell("C:\Ruta\Ejecutable.exe", vbNormalFocus)) Sleep 60000 GetExitCodeProcess lng1, lngRc If lngRc = STILL_ACTIVE Then TerminateProcess lng1, lngRc End Sub
Suerte.
395
« en: Martes 27 de Abril de 2004, 09:48 »
Hola cucaracha. Para hacerlo sencillo supongo una región a 'borrar' rectangular y uso un picture box como origen para copiar, Imagina algo así: Un PictureBox llamado Picture1 con su correspondiente imagen. Otro PictureBox llamado Picture2 sin picture cargado y con el color de fondo que desees que aparezca en el lugar 'recortado'. Option Explicit Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Public Sub Borrar() Dim lngRc lngRc = BitBlt(Picture1.hdc, 10, 10, 100, 100, Picture2.hdc, 1, 1, &HCC0020) Picture1.Refresh End Sub
Suerte.
396
« en: Martes 27 de Abril de 2004, 09:24 »
Hola León.
En principio para controlar distintos equipos en la red desde uno dado, ejecutaría algún programita en cada uno que mediante sockets, por ejemplo (también se podría probar con un exe ActiveX), se comunicase con otra aplicación que correría en el equipo que contrala al resto, indicando cuando cada programa de los otros equipos debe hacer que el pc se reinicie o bloquee.
Suerte.
397
« en: Martes 27 de Abril de 2004, 09:19 »
Hola. Ojo cuando uséis 'App.Path'... Mucha gente añade un slash (\) antes del nombre de archivo. Esto funciona bien hasta que App.Path = C:\ , por ejemplo. Me explico: Si la aplicación se encuentra en la raíz de C: , App.Path devuelve C:\. Si la aplicación se encuentra por ejemplo en C:\Ruta\ , App.Path devuelve C:\Ruta. Lo que yo suelo hacer es lo siguiente: Dim str1 As String str1 = App.Path If Right(str1,1) <> "\" Then str1 = str1 & "\" str1 = str1 & "NombreDeArchivo.ext"
¿puede Acces97 autoaveriguar cuál es la ruta donde se encuentre actualmente una base de datos abierta?
Acces97 no tiene nada que ver aquí. Además, no puede detectar 'una base de datos abierta' porque en este caso supongo que NO está abierta. En cuanto a lo del error que te da, no tiene nada que ver con el tema que estamos tratando... está bien claro, en algún sitio tienes una variable sin declarar: ejecuta la aplicación desde el IDE y comprueba cuál es la palabra que te aparece resaltada. Suerte.
398
« en: Martes 27 de Abril de 2004, 09:09 »
Hola. Podéis probar con esto, simula una pulsación de la tecla imprimir pantalla: Private Const VK_SNAPSHOT = &H2C Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Public Sub PrtScn() keybd_event VK_SNAPSHOT, 1, 0&, 0& DoEvents SavePicture Clipboard.GetData, "C:\Ruta\Archivo.bmp" End Sub
Suerte.
399
« en: Viernes 23 de Abril de 2004, 14:47 »
Hola COSERVITEL. Es una forma más de complicar un poco las cosas, pero no podrías evitar el uso ilegal del soft. Me explico: 1- Nada impediría distribuir copias ilegales del ejecutable junto con el archivo .SIS. Desde luego que en la misma empresa la aplicación se podría instalar en tantos puesto como se deseara sin mayor problema. 2- Dependiendo de como se calcule la clave según la fecha actual y los datos de entrada del archivo de texto (encriptados o no), podría ocurrir que alguien utilizase un programa para debuguear tu aplicación, agregando puntos de interrupción a las llamadas a las funciones de MSVMVB60.DLL, lograse indentificar el algoritmo de comprobación de esas claves. A continuación sólo tendría que crear un programita que crease un archivo .SIS a gusto y llamar a tu aplicación. Yo desde luego que no sabría hacerlo, pero no dudes que mucha gente si sería capaz... De todas formas, para implementar una solución de este estilo, lo principal es crear el algoritmo que a partir de la fecha actual y una serie de valores, aplicando ciertas operaciones, obtenga un valor con el que comparar y así decidir si la copia es legal o no. Algo así (por supuesto que supersimplificado, sólo para que te hagas una idea). Para probar añádelo a un Form con un CommandButton Option Explicit Private Sub Command1_Click() Dim str1 As String, str2 As String str1 = InputBox("Introducir fecha instalación", , Now) str2 = CamuflarFecha(str1) MsgBox "Fecha de instalación: " & vbCrLf _ & str1 & String(2, vbCrLf) & "Camuflada: " & vbCrLf & str2 _ & String(2, vbCrLf) & "Esta cadena la leerías desde archivo de texto" MsgBox "Dias que han pasado: " & DateDiff("d", DescubrirFecha(str2), Now) End Sub Private Function CamuflarFecha(ByVal Fecha As Date) As String Dim bytDia As Byte Dim bytMes As Byte Dim bytAnho1 As Byte Dim bytAnho2 As Byte bytDia = CByte(Day(Fecha)) bytMes = CByte(Month(Fecha)) bytAnho1 = CByte(Left(Year(Fecha), 2)) bytAnho2 = CByte(Right(Year(Fecha), 2)) Randomize Timer Dim int1 As Integer, str1 As String For int1 = 1 To bytDia + 31 str1 = str1 & Chr(Rnd * 255) Next int1 CamuflarFecha = Chr(bytDia + 61) & str1 & Chr(bytAnho1 + 10) str1 = "" For int1 = 1 To bytDia + 11 str1 = str1 & Chr(Rnd * 255) Next int1 CamuflarFecha = CamuflarFecha & str1 & Chr(bytMes + 13) str1 = "" For int1 = 1 To bytMes + 5 str1 = str1 & Chr(Rnd * 255) Next int1 CamuflarFecha = CamuflarFecha & str1 & Chr(bytAnho2) For int1 = 1 To bytMes + 3 CamuflarFecha = CamuflarFecha & Chr(Rnd * 255) Next int1 End Function Private Function DescubrirFecha(ByVal Clave As String) As Date Dim bytDia As Byte Dim bytMes As Byte Dim bytAnho1 As Byte Dim bytAnho2 As Byte bytDia = Asc(Left(Clave, 1)) - 61 Clave = Mid(Clave, bytDia + 33) bytAnho1 = Asc(Left(Clave, 1)) - 10 Clave = Mid(Clave, bytDia + 13) bytMes = Asc(Left(Clave, 1)) - 13 Clave = Mid(Clave, bytMes + 7) bytAnho2 = Asc(Left(Clave, 1)) DescubrirFecha = String(2 - Len(CStr(bytDia)), "0") & bytDia _ & "/" & String(2 - Len(CStr(bytMes)), "0") & bytMes _ & "/" & String(2 - Len(CStr(bytAnho1)), "0") & bytAnho1 _ & String(2 - Len(CStr(bytAnho2)), "0") & bytAnho2 End Function
Suerte.
400
« en: Jueves 22 de Abril de 2004, 17:52 »
Hola Giomar.
La propiedad predeterminada de un objeto es aquella que se invoca por defecto cuando se omite un miembre de ese objeto. Para explicarme mejor: la propiedad predeterminada de un TextBox es Text, de hecho, cuando haces 'miVariable = Text1' es lo mismo que si haces 'miVariable = Text1.Text'. Otro ejemplo: la propiedad 'Value' de un recordset.
Abur.
Páginas: 1 ... 14 15 [16] 17 18 ... 43
|
|
|