|
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 ... 21 22 [23] 24 25 ... 43
551
« en: Miércoles 25 de Febrero de 2004, 17:52 »
Hola FernandoP. Se me ocurre lo siguiente: crea un archivo de proceso por lotes (.Bat) y ejécutalo con Shell. Private Sub ExecHidra(Byval UsrParm As string) Dim intCanal As Integer intCanal = FreeFile Open "C:\Ruta\Hidra.bat" For Output As intCanal Print #intCanal, "hidra2 <" & UsrParam Close intCanal Shell "C:\Ruta\Hidra.bat" End Sub
Suerte.
553
« en: Miércoles 25 de Febrero de 2004, 17:36 »
Hola AbaClar.
Dende logo que mudar ó VB6 é boa ideia...
Outra cousa, a ver que che parece: Tenta usar varios TextBox para introducir/modifica-los datos dun rexistro (límpaos cando queiras dar un alta) e amosa o conxunto dos rexistros nun Grid, xa seja DbGrid, DataGrid, FlexGrid ou o que ti queiras.
Sorte, por certo: máis que 'Portunhol', o que falo é 'Portulegho', ainda que neste caso preferín usalo Galego para non semellar tan redículo. Saudos dende Galiza para meus irmaos que visitan este forum.
Abur.
554
« en: Miércoles 25 de Febrero de 2004, 17:27 »
Hola Rober.29
Para mi, lo más sencillo ser´´ia crear un ejecutable aparte para enviar los correos: Lo ejecutas con Shell y correrá de forma asíncrona. Para indicar al programa que correos debe enviar podrías pasar como parámetro la ruta y nombre de un archivo de texto que contenga la información que necesitas, pasar el valor del puntero y la longitud de determinada variable, o alguna solución por el estilo...
Chao.
555
« en: Miércoles 25 de Febrero de 2004, 17:21 »
Hola Charly. Si la tablas en la que intentas insertar datos no soporta claves duplicadas, supervisa el error que te de al intentar insertar. Otra opción es que previamente realices un SELECT de la tabla filtrando por los valores que quieres insertar, si Recordset.RecordCount = 0, entonces no existe el registro. Ten en cuenta que los valores de comparación de la cláusula WHERE son sensibles a mayúsculas minúsculas. Algo así: Dim cnx1 As ADODB.Connection Dim cmd1 As ADODB.Command Dim rs1 As Recordset Set cnx1 = New ADODB.Connection cnx1.CursorLocation = adUseClient cnx1.Open "Provider=Microsoft Jet 4.0 OLE DB Provider;" _ & "Data Source=C:\Ruta\BaseDeDatos.mdb;" Set cmd1 = New ADODB.Command Set cmd1.ActiveConnection = cnx1 cmd1.CommandType = adCmdText cmd1.CommandText = "SELECT * FROM Contactos " _ & "WHERE UCase(Trim(Nombre))='" _ & UCase(Trim(txtNombre.Text)) & "' AND " _ & "UCase(Trim(Apellidos))='" _ & UCase(Trim(txtApellidos.Text)) & "'" Set rs1 = cmd1.Execute() If rs1.RecordCount > 0 Then MsgBox "Ya existe en la tabla" rs1.Close Set rs1 = Nothing Set cmd1 = Nothing cnx1.Close Set cnx1 = Nothing
Claro está, que en vez de declarar una nueva conexión y/o comando, puedes reutilizar los que ya tengas. Suerte.
556
« en: Viernes 20 de Febrero de 2004, 09:43 »
Hola _EL_DJ_LU. Puedes usar la función api ShowWindow. Public Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
El valor para nCmdShow que necesitas, si mal no recuerdo debería ser 5 (SW_SHOW) o 3 (SW_SHOWMAXIMIZED). Suerte.
557
« en: Viernes 20 de Febrero de 2004, 09:34 »
Hola AYCUL.
Tienes varios caminos:
1- Usar la instrucción SaveSetting para guardar un elemento de la configuración (se guarda en el registro, donde nos da igual), la función GetSetting para recuperar, DeteleSetting para borrar el elemento de la configuración.
2 - Crear tus propias claves en el registro y mediante funciones del api (RegCreateKey , RegGetKey, ...), establecer los correspondientes valores.
3 - Usar archivos INI de configuración del tipo de las aplicaciones de 16 bits. Lo más sencillo es usar las api GetPrivateProfileString y WritePrivateProfileString.
4 - Usar un archivo de texto con la estructura que a ti más te convenga.
Suerte.
558
« en: Viernes 20 de Febrero de 2004, 09:26 »
Hola AbaClar.
Eu gostaría de te ajudar, mais o arquivo que juntas non inclue o componhente MSDBGrid.DBGrid... de tódolos xeitos, os datos que amosas no form de Access venhen dun subformulario... poderíate dizer que tentaras usando un control DataGrid embora voçe usa controis Data e o DataGrid precisa OleDb... Outro trilho sería usar un grid nom enlaçado a ningún control de datos, e manexalo a traverso do código.
Coido que con esto que digo, ó milhor en troques de fazer máis doada tú laboura faina máis compleja... ¿e logo, por que non provas a junta-lo DbGrid con projeto?
De tódolos xeitos, tal vez no foro alguén conheza o control que usas e che dea unha soluçao máis sinjela.
Unha aperta e sorte.
559
« en: Jueves 19 de Febrero de 2004, 17:47 »
No lo sé. Chau.
560
« en: Jueves 19 de Febrero de 2004, 16:20 »
Hola mosaic04. El tema está en que el texto que estás insertando en el documento word no se reconoce como RTF o no se inserta como RTF, de forma que el texto en word (si no ocultas la aplicación lo puedes comprobar) está sin formato. Cuando vuelves a asignar el texto al RichTextBox desde el word, el texto no tiene formato RTF, por lo que pierdes esas carácterísticas. La solución pasa por conseguir indicar a word que el formato del documento es RTF y por asignar/recuperar el texto del RichTextBox a través de la propiedad TextRTF. Como no sé como se puede indicar esto al objeto WordBasic, te presento esta otra alternativa a ver que te parece... Se trataría de guardar el valor de la propiedad TextRTF en un string, pero sustituyendo cada palabra de RichTextBox1.Text por ciertos carácteres... Ejecutar la corrección tal y como la haces y luego sustituir en la variable string aquellos caracteres por la respectiva palabra corregida. Terminariamos asignando a RichTextBox1.TextRTF el valor de la variable. Como no sé si me habré explicado muy bien (que creo que no) te envío un ejemplo de cómo creo que más o menos debería ser la cosa. Ojo que no lo he probado a fondo, sólo para que veas la idea. Private Sub Corregir() Dim strTextoRTF As String Dim var1 As Variant var1 = Split(rtf.Text, " ") Dim int1 As Integer Dim lng1 As Long Dim lngIdx As Long lngIdx = 1 strTextRTF = rtf.TextRTF For int1 = LBound(var1) To UBound(var1) lng1 = InStr(lngIdx, rtf.TextRTF, var1(int1)) If lng1 > 0 Then lngIdx = lng1 + Len(var1(int1)) strTextRTF = Left(strTextRTF, lng1 - 1) _ & "???" & Mid(strTextRTF, lngIdx) End If Next int1 'Aquí va tú código Dim MSWord As Object, Texto As String Set MSWord = CreateObject("Word.Basic") MSWord.AppMinimize MSWord.AppHide MSWord.FileNewDefault MSWord.EditSelectAll MSWord.EditCut MSWord.Insert rtf.Text MSWord.StartOfDocument On Error Resume Next MSWord.ToolsSpelling On Error GoTo 0 MSWord.EditSelectAll Texto = MSWord.Selection If Mid(Texto, Len(Texto), 1) = Chr(13) Then _ Texto = Mid(Texto, 1, Len(Texto) - 1) ' Aquí le damos la vuelta a la tortilla If Len(Texto) > 1 Then var1 = Split(Texto, " ") lngIdx = 1 For int1 = LBound(var1) To UBound(var1) lng1 = InStr(lngIdx,strTextRTF, "???") If lng1 > 0 Then lngIdx = lng1 + 3 strTextRTF = Left(strTextRTF, lng1 - 1) _ & var1(int1) & Mid(strTextRTF, lngIdx) End If Next int1 rtf.TextRTF = strTextRTF End If MSWord.FileCloseAll 2 MSWord.AppClose Set MSWord = Nothing End Sub
Bueno, resalto de nuevo que el código está sin probar ni depurar, escrito al vuelo, es para que pilles la idea... Otra cosa: he supuesto que el número de palabras que se mandan corregir es el mismo número que las corregidas. Espero que esto te sirva. Chao.
561
« en: Jueves 19 de Febrero de 2004, 09:51 »
Hola MestreZero.
Puedes seguir dos caminos:
1- Copia la bd a otra carpeta o con otro nombre y usa ese archivo como backup. Para restaurar copia sobre el original. Usa FileCopy
2- Hacer copias de las tablas INSERT INTO TablaBackUp SELECT * FROM TablaOriginal.
Yo eligiría la opción 1. Podrías también habilitar en la aplicación una opción para poder seleccionar la base de datos con la que quieres trabajar. Esto va muy bien para recuperar datos históricos, por ejemplo (al cerrar el año creo una copia de la bd con mismo nombre pero terminado con el año en una carpeta destinada a históricos y elimino de la copia posibles movimientos no correspondientes al año).
Suerte.
562
« en: Jueves 19 de Febrero de 2004, 09:43 »
A ver si esto te vale. Private Sub ChkPorts() Dim intCanal As Integer Dim int1 As Integer On Error GoTo Err_PtoPar For int1 = 1 To 16 intCanal = FreeFile Open "LPT" & int1 For Input As intCanal Close intCanal Next int1 PtoCom: On Error GoTo Err_PtoCom For int1 = 1 To 16 intCanal = FreeFile Open "COM" & int1 For Input As intCanal Close intCanal Next int1 Exit Sub Err_PtoPar: If Err.Number = 53 Then MsgBox int1 - 1 & " puerto(s) paralelo(s)" Resume PtoCom End If Exit Sub Err_PtoCom: If Err.Number = 53 Then MsgBox int1 - 1 & " puerto(s) com" End Sub
Abur.
563
« en: Jueves 19 de Febrero de 2004, 09:35 »
564
« en: Miércoles 18 de Febrero de 2004, 18:19 »
Saludos para tod@s. Hace tiempo inicié este tema y por fin lo cierro... El problema estaba en una error de codificación, que de tan evidente que era, se me escapaba, y es que a veces las tonterías más simples hacen que nos volvamos locos... Por si a alguien le interesa, aquí pongo el código que usaba pero ya corregido (el ejemplo es sólo de GetSaveFileName, el funcionamiento de GetOpenFileName es prácticamente el mismo por lo que lo omito): Private Const OFN_READONLY = &H1 Private Const OFN_OVERWRITEPROMPT = &H2 Private Const OFN_HIDEREADONLY = &H4 Private Const OFN_NOCHANGEDIR = &H8 Private Const OFN_SHOWHELP = &H10 Private Const OFN_ENABLEHOOK = &H20 Private Const OFN_ENABLETEMPLATE = &H40 Private Const OFN_ENABLETEMPLATEHANDLE = &H80 Private Const OFN_NOVALIDATE = &H100 Private Const OFN_ALLOWMULTISELECT = &H200 Private Const OFN_EXTENSIONDIFFERENT = &H400 Private Const OFN_PATHMUSTEXIST = &H800 Private Const OFN_FILEMUSTEXIST = &H1000 Private Const OFN_CREATEPROMPT = &H2000 Private Const OFN_SHAREAWARE = &H4000 Private Const OFN_NOREADONLYRETURN = &H8000 Private Const OFN_NOTESTFILECREATE = &H10000 Private Const OFN_SHAREFALLTHROUGH = 2 Private Const OFN_SHARENOWARN = 1 Private Const OFN_SHAREWARN = 0 Private Type tagOPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Private Declare Function GetSaveFileName Lib "COMDLG32.DLL" Alias "GetSaveFileNameA" (pOpenfilename As tagOPENFILENAME) As Long Public Function GuardarArchivo( _ Optional ByVal Hwnd As Long, _ Optional ByVal DftPath As String, _ Optional ByVal DftFile As String, _ Optional ByVal DftTitle As String, _ Optional ByVal DftExt As String, _ Optional ByVal FilterIdx As Integer) As String On Error GoTo Err_GuardarArchivo Dim strFilter As String strFilter = "Todos los archivos (*.*)" & Chr(0) & "*.*" & Chr(0) _ & "Archivos de texto delimitado (*.csv)" & Chr(0) & "*.csv" & Chr(0) _ & "Archivos de intercambio de datos (*.dif)" & Chr(0) & "*.dif" & Chr(0) _ & "Archivos de texto (*.txt)" & Chr(0) & "*.txt" & Chr(0) _ & "Libros de microsoft excel (*.xls)" & Chr(0) & "*.xls" & Chr(0) If Trim(DftExt) = "" Then DftExt = "*.*" If Trim(DftTitle) = "" Then DftTitle = "Guardar archivo como" If Trim(DftPath) = "" Then DftPath = App.Path If Len(DftFile) < 255 Then DftFile = DftFile & String(255 - Len(DftFile), " ") If FilterIdx = 0 Then FilterIdx = 1 Dim File As tagOPENFILENAME With File .lStructSize = Len(File) .hwndOwner = Hwnd .lpstrFilter = strFilter & Chr(0) .nFilterIndex = FilterIdx .nMaxFile = Len(DftFile) + 1 .lpstrFile = DftFile & Chr(0) .nMaxFileTitle = Len(DftTitle) + 1 .lpstrFileTitle = DftTitle & Chr(0) .lpstrTitle = DftTitle & Chr(0) .lpstrInitialDir = DftPath & Chr(0) .lpstrDefExt = DftExt & Chr(0) .flags = OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY Or OFN_OVERWRITEPROMPT .hInstance = App.hInstance .lpfnHook = 0 .lpTemplateName = 0 .nFileOffset = 0 .lCustData = 0 End With Dim lngRc As Long lngRc = GetSaveFileName(File) If lngRc <> 0 Then GuardarArchivo = Left(File.lpstrFile, InStr(1, File.lpstrFile, Chr(0)) - 1) Else GuardarArchivo = "" End If Exit Function Err_GuardarArchivo: MsgBox "Error seleccionando archivo." & String(2, vbCrLf) _ & "(" & Err.Number & ") " & Err.Description & "." _ , vbCritical, "Guardar archivo" End Function
Como curiosidad: la línea que provocaba que no apareciese el archivo por defecto era esta: .lpstrFile = Chr(0) & DftFile & Chr(0)
El fallo es evidente, ¿no? Espero que a alguien esto le sea útil. Abur.
565
« en: Miércoles 18 de Febrero de 2004, 12:30 »
Hola Navx. Para hacer algo así de manera sencilla tendrías que usar un PictureBox, o lo más fácil: un RichTextBox (Microsoft Rich TextBox Control). El código sería muy parecido: Private Sub Richtextbox1_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 101 RichTextBox1.SelColor = vbRed Case 104 RichTextBox1.SelColor = vbBlue Case 108 RichTextBox1.SelColor = vbYellow Case 111 RichTextBox1.SelColor = vbGreen Case Else RichTextBox1.SelColor = vbBlack End Select End Sub
Suerte.
566
« en: Miércoles 18 de Febrero de 2004, 09:10 »
Hola roxiii.
Seguramente te falta objApp.Quit para cerrar excel.
Abur.
567
« en: Miércoles 18 de Febrero de 2004, 09:08 »
Hola analaura.
No sé si te he comprendido muy bien: el DbCombo ya muestra una lista al desplegarse... De todas formas, si quieres tener la lista siempre visible, utiliza un control DataList.
Suerte.
568
« en: Martes 17 de Febrero de 2004, 15:22 »
Hola Sonia Rodri.
Para añadir un DataEnvironment a tu proyecto, selecciona el menú Proyecto, Componentes o pulsa Crtl - T. A continuación selecciona la pestaña Diseñadores, aquí activa la casilla 'Data Environment'. Acepta y ya puedes añadir el correspondiente data environment al proyecto.
Utiliza la propiedad DataSource del data report para seleccionar el data environment que hayas añadido. Asigna a la propiedad DataMember el correspondiente objeto command del data environment.
Ahora ya puedes recuperar la estructura de los datos.
Suerte.
569
« en: Martes 17 de Febrero de 2004, 14:41 »
Hola pacegar.
Tal vez te sirva un control MonthView (Microsoft windows common controls - 2). No conozco el control calendar, por lo que no sé si este MonthView te dará más juego, de todas formas me parece bastante completo...
Suerte.
570
« en: Martes 17 de Febrero de 2004, 12:29 »
Hola JavierGil.
Puedes probar usando DataReport o si dispones de él Crystal Reports (yo no uso ni apenas conozco uno ni otro), puedes usar un informe de acces o puedes crear tu mismo el informe 'a pedal' mediante el objeto Printer.
Suerte.
571
« en: Martes 17 de Febrero de 2004, 12:25 »
Hola Bopo.
Pues aprovecha y dile a tu amigo que te recupere ese fuente que necesitas.
Que tengas suerte...
572
« en: Martes 17 de Febrero de 2004, 12:23 »
Hola _EL_DJ_LU. Fíjate en el ejemplo, a ver si te sirve: Dim frm1 as Form For each frm1 in VB.Forms If frm1.Visible Then _ MsgBox frm1.Name & " es visible" Next frm1
Suerte.
573
« en: Sábado 14 de Febrero de 2004, 12:38 »
Hola ebolo.
Y ese componente (no lo conozco), ¿proporciona algún evento que puedas controlar para saber si tu aplicación debe finalizarse?
Chau.
574
« en: Sábado 14 de Febrero de 2004, 12:27 »
Hola roxiii. Para eso, debes modificar un par de cosillas: 1- Como el libro debe existir, en vez de 'CreateObject', utilizarías esto para obtener la instancia al objeto application: Set objApp = GetObject("C:\Ruta\Nombre.xls")
2- Para obtener una instancia a la hoja que quieres modificar: Set objWb = objApp.Worksheets Set objSh = objWb("Nombre de mi hoja")
3- El resto viene a ser lo mismo. Suerte.
575
« en: Sábado 14 de Febrero de 2004, 12:18 »
Me parece que lo tienes crudo... cualquier posible desensamblado poco se parecería al código original.
Páginas: 1 ... 21 22 [23] 24 25 ... 43
|
|
|