|
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
« en: Domingo 2 de Marzo de 2003, 19:20 »
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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« en: Sábado 22 de Febrero de 2003, 03:00 »
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
« 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
« 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
« 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
« en: Jueves 20 de Febrero de 2003, 23:37 »
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
« 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
« 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
« en: Miércoles 19 de Febrero de 2003, 22:52 »
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
« 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
« en: Martes 18 de Febrero de 2003, 01:35 »
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
« 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
« 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
|
|
|