|
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 ... 24 25 [26] 27 28 ... 43
626
« en: Lunes 2 de Febrero de 2004, 11:49 »
Si enumeras las propiedades de un objeto ADODB.Connection usando un proveedor Jet, verás que cuenta con la propiedad Transaction DDL lo cual indicaría que el proveedor soporta transacciones...
Incluso con DAO y bases de datos jet, la propiedad Transactions de un recordset para cursores Dynaset o tabla, es True, lo que indica que sí se admiten transacciones...
627
« en: Lunes 2 de Febrero de 2004, 11:23 »
Hola MindEye.
Utiliza la propiedad ForeColor del objeto printer: . . . Printer.ForeColor = vbYellow Printer.Print "Texto amarillo" Printer.ForeColor = vbRed Printer.Print "Texto rojo" . . . Abur.
628
« en: Viernes 30 de Enero de 2004, 14:15 »
Hola Rober.29. Con Shell sin más también vale, a no ser que necesites ejecutar el registro de forma síncrona, claro, en cuyo caso la filosofía a seguir es la del ejemplo. Seguramente te interese ejecutar regsvr32 con el modificador /S para evitar el mensaje. Échale un vistazo http://foros.solocodigo.com/index.php?showtopic=4489 que a lo mejor te interesa. Chao.
629
« en: Viernes 30 de Enero de 2004, 09:08 »
Hola eli_moran.
Para mi, desde luego que utilizar recordsets es lo suyo...
Chao.
630
« en: Jueves 29 de Enero de 2004, 17:59 »
Hola eli.
Deberás usar el adecuado valor de bloqueo para el cursor asociado al recordset abierto. Si usas ADO, un valor adLockPessimistic bloquea el registro actual una vez que se invoca el método Edit. un valor adLockOptimistic bloqueará sólamente cuando se usa el método Update, el valor adReadOnly abrirá el cursor como de sólo lectura.
Chao.
631
« en: Jueves 29 de Enero de 2004, 16:33 »
Hola rechy. Usa algo de este estilo: Private Sub Command1_Click() On Error GoTo Err_XLS Dim objApp As Object Dim objWb As Object Dim objSh As Object Dim lngR As Long, lngC As Long Set objApp = CreateObject("Excel.Application") Set objWb = objApp.WorkBooks.Add Set objSh = objWb.ActiveSheet For lngR = 0 To MSFlexGrid1.Rows - 1 For lngC = 0 To MSFlexGrid1.Cols - 1 objSh.Cells(lngR + 1, lngC + 1) = _ MsFlexGrid1.TextMatrix(lngR, lngC) Next lngC Next lngR objWb.SaveCopyAs "c:\ruta\nombre.xls" objWb.Saved = True Exit_XLS: On Local Error Resume Next objApp.Close objApp.Quit Set objSh = Nothing Set objWb = Nothing Set objApp = Nothing Exit Sub Err_XLS: MsgBox "(" & Err.Number & ") " & Err.Description, vbCritical, "Xls" Resume Exit_XLS End Sub
Abur.
632
« en: Jueves 29 de Enero de 2004, 16:11 »
Ok. Muchas gracias por la info.
Chao.
633
« en: Jueves 29 de Enero de 2004, 16:09 »
Hola eli_moran.
Podrías utilizar un control DataGrid para modificar valores sobre la rejilla, o utilizar un FlexGrid, o incluso un ListView1 (vista lvwReport) para mostrar registros, editando/añadiendo los valores de los campos sobre textbox.
Abur.
634
« en: Jueves 29 de Enero de 2004, 14:49 »
Hola javirues.
Más de una vez me ha pasado eso mismo... unas veces al reiniciar la instalación continua correctamente, otras aparece el mismo mensaje hasta el aburrimiento. Las veces que me ha ocurrido esto último, siempre he acabado la instalación a mano (pues a pesar del mensaje, MSVMVB60.DLL queda instalada, que es lo que me suele importar... por suerte, a partir de w2000, este runtime viene con el propio s.o).
Las veces que me he visto en esta situación, he tenido la suerte de poder instalar yo mismo el programa que distribuía, con lo cual este tipo de problemas los solucione a mano personalmente o como mucho por teléfono.
La gente suele echar pestes contra el instalador que trae vb, de hecho, hay otros instaladores por ahí pululando: muchos hablan muy bien de SetUp Factory, aunque yo no lo conozco...
Para evitar todas estas cosas, suelo crear mi propio programa de instalación, de todas formas, no estaría nada mal saber por qué ox pasan estas historias y qué solución tienen.
Suerte.
Suerte.
635
« en: Jueves 29 de Enero de 2004, 09:19 »
Hola eli.
Lo principal para hacer una buena aplicación de este estilo es tener una base de datos bien diseñada. El motor que elijas ya es cosa tuya y de los medios de los que dispongas. Mediante ADO puedes tener acceso a datos en cualquier bd que suministre un proveedor de acceso a datos OleDb. SQL es para mi la herramienta más cómoda y funcional para atacar la bd.
Para crear la aplicación en vb, sin duda tendrás que usar controles textbox, labels, comandbutton, tal vez algún tipo de rejilla, picturebox, ... vamos, lo típico. La apariencia y distribución de los controles, ya es cosa del arte y gusto de cada uno... , poco tiene que ver con la programación en si y muchas veces puede ser lo que dé a tu aplicación un toque atractivo para el usuario, (en ocasiones y según que usuario más que la propia eficacia de la aplicación).
Para realizar mantenimientos de tablas (altas, bajas, modis, consulta), suelo utilizar una misma vista de la ventana en la que hago que los controles para introducir datos cambien su estado a bloqueado o no bloqueado según el valor de algún indicador, que también valdrá para comprobar que acción hay que tomar (INSERT, UPDATE, DELETE) cuando los datos son confirmados/validados. Lo que comentas de los tabs puede estar bien, pero claro está, utilizando los mismos controles para cualquier tab seleccionada y el valor de la clave como indicador de la acción.
En fin... un tema muy general para tratar en un post.
Suerte.
636
« en: Jueves 29 de Enero de 2004, 08:59 »
Hola ebolo.
Efectivamente, tienes toda la razón... la variable está declarada como indAllowMinimize.
Chao.
637
« en: Miércoles 28 de Enero de 2004, 15:21 »
Hola nestor q
Efectivamente, como tú dices, Width devuelve o establece el tamaño del Ancho de papel actual para la impresora y ScaleWidth el ancho imprimible, de igual forma que ScaleWidth aplicada a un MdiForm, que devuelve el ancho no ocupado por controles PictureBox (o alineables, supongo) en el MdiForm.
La mayoría de las impresoras dejan un margen no imprimible (independientemente del margen que tú estés usando) a los lados del papel, si bien en algunas es posible definir un valor (edge to edge) que indica a la impresora que imprima desde un borde hasta otro del papel. En caso de que la impresora pintase 'edge to edge' los valores para Width y ScaleWidth coincidirían.
Otra causa de truncamiento, evidente, podría ser que el papel cargado en la impresora fuera de menor ancho que el configurado... pero está claro que este no es tu caso.
Suerte.
638
« en: Miércoles 28 de Enero de 2004, 15:11 »
Más fácil: Private indAllowMinimize as boolean Private intWindowState as integer Private Sub Form_Load Comman1.Caption = "Permir minimizar" End Sub Private Sub Command1_Click IndAllowMinimize = Not indAllowMinimize If indAllowMinimize Then Command1.Caption = "No permitir minimizar" Else Command1.Caption = "Permitir minimizar" intWindowState = 0 End If End Sub Private Sub Form_Resize() If Me.WindowState = 1 And Not indAllowResize Then Me.WindowState = intWindowState Else intWindowState = Me.WindowState End If End Sub
Suerte.
639
« en: Martes 27 de Enero de 2004, 17:15 »
Otra forma que se me ocurre es utilizar sólo un formulario: algo así como juntar los dos formularios en uno con los controles de los dos, tal vez agrupados en frames, y según lo necesites, al cambiar alguna propiedad redimensionar, hacer visible o invisible, etc...
Tal vez en tú caso no merece la pena ponerse a hacer algo así, ya que diseñar un formulario de esta forma es un asunto algo engorroso aunque sencillo (aparte del coste en memoria que podría suponer tener un formulario excesivamente cargado de controles, y más si sólo se van a utilizar muy ocasionalmente).
También podrías pasar al segundo formulario el recordset que contiene los datos del primer combo...
Por lo pronto, ni conozco, ni se me ocurren otras formas de hacer lo que pretendes, a ver si alguién aporta más...
Suerte.
640
« en: Martes 27 de Enero de 2004, 14:45 »
Hola mosaic04. Haz referencia al combo del primer formulario como a otro miembro cualquiera del formulario: Imagina un formulario (en el ejemplo Form1) que contiene el combo en cuestion (en el ej. Combo1). Cargarás los datos de Form1.Combo1 en un combo (Combo1) en otro formulario (Form2). . . . Combo1.Clear Dim lng1 as Long for lng1 = 0 To Form1.Combo1.ListCount - 1 Combo1.AddItem Form1.Combo1.List(lng1) next lng1 Combo1.ListIndex = Form1.Combo1.ListIndex . . .
Suerte.
641
« en: Martes 27 de Enero de 2004, 09:48 »
Hola.
Ten en cuenta que si en alguno de los controles contenidos en el formulario, tienes código para el mismo evento que en el formulario (me explico: en el mismo form tienes definido el evento KeyPress, por ejemplo, para el form y para otro control), siempre se desencadenará el evento del control antes que el del formulario a no ser que establezcas la propiedad del formulario KeyPreview=True.
Abur.
642
« en: Martes 27 de Enero de 2004, 09:41 »
Hola ahmolina. Prueba con un código de este estilo: Private Sub Command1_Click() On Error GoTo Err_Command1_Click Dim intCanal As Integer intCanal = FreeFile Open "c:\Borrar\Archivo.txt" For Output As intCanal Dim int1 As Integer For int1 = 0 To 9 Print #intCanal, Matriz(int1, 0), Matriz(int1, 1) _ , Matriz(int1, 2), Matriz(int1, 3), Matriz(int1, 4) _ , Matriz(int1, 5), Matriz(int1, 6), Matriz(int1, 7) Next int1 Exit_Command1_Click: On Local Error Resume Next Close #intCanal Exit Sub Err_Command1_Click: MsgBox Err.Description, vbCritical Resume Exit_Command1_Click End Sub
En lugar de Print #canal, podrías utilizar Write para dar más consistencia a los datos: se usaría ; como delimitador de valores, y el tipo de datos de cada campo y su formato quedaría reflejado claramente y de forma estándard (textos delimitados por comillas dobles, números con coma como separador decimal , valores especiales entre almoadillas...). Suerte.
643
« en: Martes 27 de Enero de 2004, 09:16 »
En este código no es necesario agregar referencia de ningún tipo. Con Set dbW = GetObject(App.Path & "\Tiradentes2.mdb") obtenemos la referencia necesaria a la base de datos (si es que existe, claro) en el objeto dbW, si la base de datos no está abierta, se crea una nueva instancia de la aplicación. Las variables de objeto están declaradas como object. El 'CreateObject' y el 'OpenCurrentDatabase' sobran... El código original esta probado satisfactoriamente con access97, pero recuerdo que a Gerard no se le abría la vista previa del informe (no sé como lo solucionó al final), usaba wXp. El bucle que comprueba si en los informes abiertos de la bd ya existe uno con igual nombre del que deseamos abrir, es necesario para el correcto funcionamiento del filtro (El valor de dbW.Reports.Count no indica el número de informes en la bd, como pudiera parecer, sino que muestra el número de informes abiertos en ese momento). Loco: referente a que no te funcione el SQL que indicas, te diré que es lógico... Prueba una sentencia como esta: SELECT * FROM PERSONAL WHERE Month([Fecha Nacimiento]) = 9
El uso que haces del carácter comodín % es incorrecto, en todo caso debería ser algo así como: SELECT * FROM PERSONAL WHERE [Fecha Nacimiento] like '%/09/%'
El funcionamiento de los parámetros que se hubieran definido en la consulta o en el filtro del informe también está comprobado con access97. Abur.
644
« en: Lunes 26 de Enero de 2004, 17:21 »
Hola MestreZero.
No comprendo muy bien qué es lo que pretendes (no sé donde quieres escribir ni donde que se te muestren los resultados, ¿tal vez escribir en un combo y el resultado en un grid?).
A lo mejor puedes conseguir lo que necesitas fácilmente con un control combo de Microsoft Forms 2.0 que es el típico combo de los que se usan en access y permite varias columnas...
Tampoco comprendo cuando dices que no es posible tener un combo ordenado. Prueba estableciendo la propiedad Sorted=True.
Intenta ser algo más concreto.
Chao.
645
« en: Lunes 26 de Enero de 2004, 17:14 »
Hola de nuevo nestor g.
Debes modificar el tamaño del PictureBox para ajustarlo al tamaño de la página que piensas imprimir (recuerda también establecer la propiedad AutoRedraw=True).
Como me resulta complicado de explicar, mejor te adjunto un ejemplo que acabo antes.
Abur.
646
« en: Lunes 26 de Enero de 2004, 16:01 »
Hola pacegar.
Empieza por añadir al proyecto la correspondiente referencia a Word (también podrías utilizar CreateObject / GetObject)... luego examinador de objetos y a investigar.
Básicamente supongo que se tratará de obtener una referencia a un objeto Document, utilizar el método Add de su miembro Tables para añadir una nueva tabla y a partir de ahí, rellenar los datos de la tabla, supongo que mediante un objeto de tipo Range, esto último nunca lo he probado, pero imagino que por ahí van los tiros.
Suerte.
647
« en: Lunes 26 de Enero de 2004, 15:21 »
Hola Liquid_Snake. 1 - Prueba algo de este estilo: Private Sub MSFlexGrid1_SelChange() Dim intR As Integer, intC As Integer Dim intStepR As Integer, intStepC As Integer Dim str1 as String If MSFlexGrid1.Row > MSFlexGrid1.RowSel Then intStepR = -1 Else intStepR = 1 End If If MSFlexGrid1.Col > MSFlexGrid1.ColSel Then intStepC = -1 Else intStepC = 1 End If For intR = MSFlexGrid1.Row To MSFlexGrid1.RowSel Step intStepR For intC = MSFlexGrid1.Col To MSFlexGrid1.ColSel Step intStepC str1 = str1 & MSFlexGrid1.TextMatrix(intR, intC) & "; " Next intC Next intR MsgBox Left(str1, len(str1) - 3) End Sub
El código recorre la selección mostrando en un cuadro de diálogo el valor de las celdas seleccionadas. 2 - Usa la misma filosofia: utiliza la propiedad TextMatrix para obtener/asignar valores por fila y columna. Para almacenar los datos, valora tu mismo que es lo que te coviene (archivo de texto, tabla, etc...). Suerte.
648
« en: Lunes 26 de Enero de 2004, 14:59 »
Hola nestor g.
Yo sin dudarlo utilizaría un control PictureBox. No cuenta con barras de desplazamiento, pero puedes añadir los correspondientes controles (HScrollBar y VScrollBar) para obtenerlas. Para efectuar el desplazamiento del picture, modifica las propiedadaes Top y Left según el valor del VScroll y el HScroll respectivamente.
Si te hace falta, luego, si tengo tiempo te adjunto un ejemplo...
Suerte.
649
« en: Miércoles 21 de Enero de 2004, 18:28 »
Hola rechy. Declara la variable RHOT a nivel de módulo como una matriz a dimensionar dinámicamente: Private RHOT() As Single Function calcular_SG(SG, T) On Local Error Resume Next Dim intIndex as integer intIndex = Ubound(RHOT) intIndex = intIndex + 1 If IntIndex > 1 then Redim Preserve RHOT(1 to intIndex) else Redim RHOT(1 to 1) end if . . . 'Aceite Combustible . . . 'Aplicacion de Correccion de Hidrometro RHOT(intIndex) = RHO * HYC . . . End Sub
De esta forma cada vez que llames a la función almacenas el valor que te interese en una nueva dimensión RHOT(intIndex) de forma que puedes tener disponibles todos los valores cuando te interese. Suerte.
650
« en: Miércoles 21 de Enero de 2004, 17:34 »
Hola Antoniocgt.
No tengo ni idea de Crystal Report, pero supongo que algún objeto contará con una propiedad a la que asignar un objeto o cadena de conexión, cadena en la que puedes especificar el path de la bd... vaya, que en el sitio en que especificas el nombre de la bd, especifica el nombre pero con su vía de acceso correspondiente.
De todas formas, y por si este no era tu problema, viendo que el texto del mensaje es 'Logon Failed' y teniendo en cuenta que has movido la base de datos a un servidor... pues se me ocurre que el fallo puede estar a nivel de autorizaciones o permisos de usuario para el recurso del servidor... (repito que no tengo ni idea de CR) tal vez CR necesite crear algun recordset actualizable, y si no cuenta con permiso de escritura...
Espero que esto te ayude, y si no a ver si alguien que controle el tema te echa un cable. Suerte.
Páginas: 1 ... 24 25 [26] 27 28 ... 43
|
|
|