• Domingo 11 de Mayo de 2025, 22:15

Mostrar Mensajes

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 - J.M.Movilla

Páginas: 1 ... 14 15 [16] 17
376
Yo tengo experiencia sólo en MS-DOS (Clipper). Su pongo que en Visual se obtenga la misma respuesta.
Puedo asegurarte que no hay nada más sencillo: Haces un setfocus en el objeto al que ha de asignarse el valor del código de barras (generalmente un textbox) y cuando dispera la pistola de lectura, verás que el código se introduce automáticamente en ese textbox.
Suerte.

377
Visual Basic 6.0 e inferiores / condiciones de busqueda con "find"
« en: Sábado 1 de Marzo de 2003, 20:58 »
Hola:

Carga un control ADOdc y pon este código, o el que se corresponda con el tipo de fichero...

Dim cBuscar As String

    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & DataBaseName
    Adodc1.RecordSource = "Select * From " & TablaName & " Order by " & CampoName
    Adodc1.Refresh

        cBuscar = CampoName & " like '" & StrBusqueda & "*'"
        Adodc1.Recordset.MoveFirst
        Adodc1.Recordset.Find (cBuscar)

Verás cómo funciona.

Yo también empleo FindFirst (cBuscar), pero usando DAO. Y la pregunta en concreto se refería a la instrucción "FIND".

Por cierto, congratulaciones por tu incorporación al foro; ojalá te dure mucho la intensa actividad y la buena voluntad que nos demuestras.

378
Visual Basic 6.0 e inferiores / Ayuda inexistente
« en: Viernes 28 de Febrero de 2003, 21:05 »
Pues efectivamente, la edición Empresarial consta de 3 CD's más otros 2 de MSDN.

El contenido de los CD's 2 y 3 no es fundamental, por lo que perfectamente puede funcionarte la aplicación instalando sólo el primer CD. ¡Pero te pierdes muchas "herramientas" que, teniéndolas, llegas a considerarlas también importantes...!

Los 2 CD's del MSDN sí que son indispensables, porque sin la ayuda estás siempre pendiente de los consejos de los demás. Te aconsejo te hagas con ellos (como mínimo el MSDN-1, aunque no estoy seguro de si la instalación exige disponer de los dos...)

379
Visual Basic 6.0 e inferiores / ayuda con CRViewer
« en: Jueves 27 de Febrero de 2003, 00:07 »
No sé si será la solución, pero detrás de la instrucción "rs.Open "SELECT..." echo en falta
rs.Refresh
Y a continuación yo te aconsejo que pongas una pausa de 1-2 segundos antes de aplicar este recordset al reporte.

A ver si he acertado, ojalá...

380
Visual Basic 6.0 e inferiores / FileSystemObject
« en: Miércoles 26 de Febrero de 2003, 23:44 »
Hola:
Yo lo empleo frecuentemente.  Por ejemplo, para borrar un fichero, con DeleteAFile( Filename) :

Sub DeleteAFile(EspecArch)
    Dim fso
   
    On Error Resume Next
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.deletefile (EspecArch)
End Sub

"On Error Resume Next" lo pongo para evitarme en condicionar si existe el fichero; en el caso de que no exista, no lo borra, claro está, pero no da error...

381
Visual Basic 6.0 e inferiores / Re: Ayuda inexistente
« en: Martes 25 de Febrero de 2003, 21:51 »
La instalación de VB consta de 5 CD. Por lo que veo a tí te faltan los dos últimos, que se refieren al MicroSoft Developer Network, es decir a la ayuda en línea...
Hazte con la versión completa e instala sólo estos dos últimos CD's

Y suerte, que siempre es bueno contar con ella...

382
Visual Basic 6.0 e inferiores / Re: Contraseña en base de datos
« en: Martes 25 de Febrero de 2003, 21:40 »
Repaso mi código y compruebo que cometí el error de poner la opción de la contraseña como "wpd", cuando en realidad es "pwd"
Ya me perdonarás.  Prueba este cambio, porque tiene que funcionarte...

383
Visual Basic 6.0 e inferiores / Sobre los listbox
« en: Lunes 24 de Febrero de 2003, 20:38 »
Supongo tengas instalados los ejemplos (samples) de VB.

Por si acaso no lo tuvieras, te envío el que mejor va a ilustrarte sobre estos dos temas...

384
Visual Basic 6.0 e inferiores / Sobre los Combobox
« en: Lunes 24 de Febrero de 2003, 20:37 »
Supongo tengas instalados los ejemplos (samples) de VB.

Por si acaso no lo tuvieras, te envío el que mejor va a ilustrarte sobre estos dos temas...

385
Visual Basic 6.0 e inferiores / ayuda
« en: Lunes 24 de Febrero de 2003, 20:30 »
Hola, Carola:

La verdad es que el método que utilizas para inputar los valores no es muy ortodoxo, que digamos; pero tampoco tiene por qué darte errores... Para evitarlos, rectifícalos así:

cantidad = InputBox("Intruduzca la Cantidad", "Introducir")
cantidad = cantidad + 0
List1.AddItem cantidad
articulos = InputBox("Intruduzca el Artículo", "Introducir")
articulos = articulos + " "
List2.AddItem articulos
precio = InputBox("Intruduzca el Precio", "Introducir")
precio = precio + 0
List3.AddItem precio

total = (cantidad * precio)
List4.AddItem total


Text1.Text = Val(Text1.Text) + Val(total)

Espero que con esos detallitos no te quede ningún campo vacío...

Saludos

386
Visual Basic 6.0 e inferiores / Como convertir una tabla a texto en vb
« en: Lunes 24 de Febrero de 2003, 00:32 »
Es difícil entender qué quieres hacer: Puedes pretender hacer un documento con varios campos de un registro, o hacer un fichero de texto con el campo "x" de toda la base de datos... Otro inconveniente es que desconocemos de qué tipo son esos campos que pretendes convertir... Porque, claro está, si se trata de un campo numérico, tendrías que hacer una previa conversión a str(campo); y no digo nada si se trata de una fecha...

En términos generales, y suponiendo que quieras hacer un texto que contenga todos los campos (alfanuméricos) de un registro (voy a evitar el término "For Each" por si no te es familiar), harías así:

Texto = ""
for n = 0 to rs.Recordset.RecordCount - 1
          Texto = Texto & Rs.Recordset.Fields(n)
next

(Espero sepas que previamente has de haber definido la variable: Dim Texto as String, y que hayas abierto tu base de datos con un Recordset de nombre Rs...)

Suerte.

387
Visual Basic 6.0 e inferiores / Re: Como realizar consultas de 100 en 100 Reg...
« en: Lunes 24 de Febrero de 2003, 00:13 »
Nunca he tenido necesidad de realizar este "truco", pero mientras nadie te indique una fórmula mejor, pienso que puede servirte esta rutina.

También creo que sería bueno que pensases en una SQL que limitase la lectura, porque siempre hay alguna condición que justifique la extracción de registros. Creo que nunca tendrás necesidad de leer toda la base de datos (bien por fechas, por secciones, por cliente, por proveedor... un algo que te permita hace una cláusula "WHERE")

388
Visual Basic 6.0 e inferiores / Re: Contraseña en base de datos
« en: Domingo 23 de Febrero de 2003, 21:50 »
Hola:
Si utilizas ese método para abrir la base de datos no tienes más opciones que indicarle el modo de apertura (Sólo-lectura, lectura-escritura, etc)

Te aconsejo que te crees un espacio de trabajo y definas en él cada base de datos que vayas a usar; por ejemplo:

Dim Ws as Workspace
Dim Db1 as Database, Db2 as Database

Set Ws = CreateWorkspace("", "admin","", dbUseJet) ' Para una base de Access

Set Db1 = Ws.OpenDatabase(app.path & "bd1.mdb", wpd="xxx")

.
.
.
.

No olvides liberar la memoria después de cerrar tanto la base de batos como el espacio de trabajo, de esta forma

Set Db1 = Nothing
Set Ws = Nothing

NOTA.  Puedes hacer que se pregunte previamente la contraseña, en lugar de introducirla directamente por código.  Para eso, antes de abrir el fichero, haces un input de ese valor, a través de un textBox, y luego en lugar de poner wpd="xxx", pones wpd=txtBox1.text

¿Vale?  Pues que te salga bonito...

389
Parece que existe interés en conocer cómo hago esta configuración de variables al iniciar la aplicación.
Por supuesto que cada uno tiene sus métodos, y sobre su abanico de necesidades, por lo que mi ejemplo sólo les servirá de base para que cada cual lo personalice a su gusto.
Concretamente tú, Gerard, en uno de esos campos grabas el dato de tu checkBox, y al arrancar lo leerás para que adquiera por defecto el valor que le hayas asignado. Por supuesto, entiéndase que en la aplicación habrá una rutina con la que actualizaríamos todos estos parámetros de inicio...

Ahí os envío el fragmento del inicio de una de mis aplicaciones, con lo correspondiente a estos detalles de que hablamos. Al ejecutarlo os identificareis como Usuario Núm. 0 (cero) al que he dejado sin contraseña (pulsar [Intro] con el campo vacío).

La prueba tendréis que hacerla con el sistema de "paso a paso" (F8) para enteraros de lo que la rutina hace, porque visiblemente no se aprecia nada.

Suerte

390
Visual Basic 6.0 e inferiores / Re: Actualizar reporte
« en: Viernes 21 de Febrero de 2003, 00:14 »
He dado con la solución de este problema que nos afectaba:

Hay que incluir dos instrucciones

1ª  Poner una pausa de 3-4 segundos después de updatear o cerrar el fichero que alimenta el reporte

2ª  Después de cerrar el DataReport, hacer un ¡¡¡ set DataReport = Nothing !!!

Con esto ya no he vuelto a tener problemas; espero que a tí también te los solucione.

Saludos

391
Visual Basic 6.0 e inferiores / Re: Iconos en un Menu
« en: Viernes 21 de Febrero de 2003, 00:07 »
Amigo José D:
Para eso estamos, para ayudarnos ¿no?

Naturalmente el que reciba un correo de 5 Mb tiene que tener una cuenta que se le permita. Así que tenemos que ampliar el conocimiento de esas cuentas, que además son totalmente gratuitas. Y a mí me parece muy raro que no se conozcan en estos foros en que es habitual el envío de ficheros...

Saludos y a seguir distribuyendo amistad.

392
Visual Basic 6.0 e inferiores / Re: condiciones de busqueda con "find"
« en: Jueves 20 de Febrero de 2003, 23:49 »
Claro que se puede, pero tienes que tener cuidado de redactarla adecuadamente:

En tu ejemplo dirías:

strcondicion= "Nombre = 'jesus' and edad = 35"

if fichero.Recordset.RecordCount > 0 then

fichero.Recordset.MoveFirst    ' En caso contrario buscaría a partir del registro actual y podría no encontrar el dato si estaba en registros anteriores...

fichero.Recordset.Find ( strcondicion)

End If

Así, sí te funcionaría.

Saludos

393
No me resulta fácil hacerte un código sin saber qué tipo de parámetros quieres manejar. Espero que pueda servirte esta guía:

En un fichero Config.mdb, por ejemplo, tenemos un campo al que llamamos Cheq1, de tipo lógico; un cheq2 de tipo lógico; un Text1 de tipo string, etc.
 Pongamos otro que sea Password, de tipo string.

Abro ese fichero con nombre de RecConfig, y pongo:

LCheq1 = RecConfig!Cheq1
LCheq2 = RecConfig!Che12
TText1 = RecConfig!Text1
MiPassWord = RecConfig!PassWord...

Desencripto MiPassWord (cada cual tiene su método de encriptado/desencriptado).

Cuestiono el valor de la palabra de paso, y si es correcta continúo...

Ahora le asigno el valor de cada parámetro (ésos que tú quieres tener configurados al arrancar el programa) de acuerdo con los datos que hemos leído del fichero Config.  Los presento en pantalla y permito que se modifiquen, para variar la configuración a voluntad. Si se han cambiado estos valores hago una asignación de los mismos en el fichero:

RecConfig!Cheq1 = LCheq1, etc. y termino con el Update...

No puedo decírtelo de otro modo, porque ignoro qué es lo que quieres configurar. Tampoco encuentro tu dirección de correo para enviarte algo más concreto. Tu verás si te lo he solucionado o si necesitas facilitarme más datos y tu email para que te envíe el código más explícito.

Saludos,   José María

394
Visual Basic 6.0 e inferiores / Data Report Dinamico
« en: Miércoles 19 de Febrero de 2003, 23:44 »
Hola:
Espero haber comprendido tu problema. A ver si sirve lo siquiente:

Report1.Sections(1).Controls.Item("VariablePersonal").Caption = [Variable definida por el usuario]

Esto te serviría para rellenar un campo tipo RptLabel de nombre VariablePersonal que hubieras colocado en el Encabezado de informe de un DataReport denominado Report1...

Si lo quieres situar en otra Section, pues, ya sabes...

Saludos

395
Visual Basic 6.0 e inferiores / Ayuda, por favor. alinear numeros a la derecha
« en: Miércoles 19 de Febrero de 2003, 23:01 »
Hola:
Prueba a hacer un Print Format( Valor, "000000.00"), o con el formato que te interese.

También puedes imprimirlo como string, llenando de espacios a la izquierda hasta que contengan todos la misma anchura; p.e.:
Print space(30 - len(trim(str(Valor1)))) * 2) & trim(str(Valor1)
Print space(30 - len(trim(str(Valor2)))) * 2) & trim(str(Valor2)
etc...

Lo estoy escribiendo de memoria, sin probarlo... Perdona si te envuelvo con algún error sintáctico. Verás que pongo [* 2] porque cada número ocupa tanto como dos espacios.

Suerte

396
Hola:
Tendrás que tener un fichero (preferiblemente en App.Path) con los campos de todas esas variables que quieras configurar; al entrar las lees, y cuando las modifiques las grabas. Así siempre te leerá los valores que tú le dieras la última vez.

Suerte

397
MS Access / Campos de hipervínculos
« en: Miércoles 19 de Febrero de 2003, 01:25 »
Hola:

A mí personalmente no me gusta cómo actúan los campos de tipo hipervínculo: es muy bonito el ver cómo al pulsar sobre ellos con el ratón te conectan automáticamente con Internet; pero si se trata de un correo empieza solicitando tu cuenta, tu clave... Es decir; peor que si accedes directamente...

Yo incluyo un botón que referencio a una rutina así:

Private Sub CmdLink_Click(Index As Integer)
    Dim sLink As String

    sLink = [Campo que contiene la dirección]
        ShellExecute 0, vbNullString, "mailto:" & sLink, vbNullString, _
        vbNullString, vbNormalFocus
 End Sub

En un módulo (o en la cabecera del formulario) habrás declarado esta API:

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

Y verás cómo es más efectivo este sistema.

El incorporar a todos tus contactos es también posible, pero en este momento no recuerdo cómo se hace.

Saludos

398
Hola:

Sospecho que no defines adecuadamente el proveedor; Microsoft.Jet.OLEDB.3.51 sólo sirve para Access 97

Usa el siguiente código:

' Abre la base de datos:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                              "Data Source=" & DataBaseName
    ' Conecta la tabla para el recordset:
    Adodc1.RecordSource = "Table1"
    ' Refresca el recordset cargando la tabla
    Adodc1.Refresh

Espero te funcione bien

Saludos

399
Visual Basic 6.0 e inferiores / Re: no encuentra base de datos
« en: Domingo 16 de Febrero de 2003, 01:09 »
Yo lo soluciono de esta forma:

En el directorio de la aplicación (App.path) tengo un fichero que suelo llamar Setup.mdb

Tengo en él muchos campos que aprovecho para personalizar la aplicación, pero los que interesan para este caso son

Número de usuario
Nombre de usuario
Clave de acceso
Ruta de la D.B.

(Naturalmente, el nombre y la clave están encriptados...)

Cuando un usuario ejecuta el programa se le pregunta por su Número y su Nombre; se hace un move al número indicado y se comprueba su nombre; si es correcto le doy tres oportunidades para introducir su Clave secreta; si no lo consigue, grabo en otro fichero la hora en que se ha intentado acceder y las claves que se han introducido, que suelen dar una orientación sobre quién ha "fisgado"...
Y cuando se pasa la barrera de la clave, se lee la ruta de la base de datos, que se definió al hacer la instalación, y que puede ser por ejemplo: "F:Archivos de programaMi aplicaciónDataName_DB.mdb", o bien "ServerUser0...."

Me funciona al 100 %. Incluso tengo hecha la fórmula para buscar y grabar esa ruta en el momento de la instalación de la aplicación para cada usuario.

Que te sea útil a tí también.

400
Visual Basic 6.0 e inferiores / Ayuda con FlexGrid
« en: Domingo 16 de Febrero de 2003, 00:54 »
Hola:

Supongamos que al flexgrid le denominas TelFlex:

    For i = 0 To TelFlex.Cols - 1
       
        ' Establece la anchura de la columna
        If i = 0 Then
            TelFlex.ColWidth(i) = 1000  'Naturalmente aquí definirás los pixeles que necesites
        ElseIf i = 1 Then
            TelFlex.ColWidth(i) = 4000
        ElseIf i = 2 Then
            TelFlex.ColWidth(i) = 1980
        ElseIf i = 3 Then
...........................
        End If
    Next i

Así lo empleo yo, aunque puede que exista un método que pueda definir automáticamente la anchura de acuerdo con la anchura del campo.

Saludos.

Páginas: 1 ... 14 15 [16] 17