Discussion:
Guardar texto en archivo txt
(demasiado antiguo para responder)
Joca
2003-07-10 08:35:44 UTC
Permalink
Hola a todos.

¿Como puedo hacer para guardar el texto que tengo en dos campos de texto, el
campo1 en la primera línea y el campo 2 en la segunda, para luego poder
recuperar la línea que quiera.?

Gracias.
Saludos.
Joca
Onix
2003-07-10 08:54:33 UTC
Permalink
-------- CREAR TXT --------
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.CreateTextFile("c:\archivoprueba.txt", True)
fso.WriteLine("Esto es una prueba en la primera linea.")
fso.WriteLine("Esto es una prueba en la segunda linea.")
fso.Close
----------------------------

-------- LEER TXT ---------
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.OpenTextFile("c:\archivoprueba.txt", 1) '1 para leer, 2
para escribir
LeerLíneaEnArchivoDeTexto = archivoTXT.ReadLine
----------------------------

Tambien puedes usar ReadAll para coger todo el contenido del txt.

En la ayuda del visual teclea FileSystemObject para obtener más metodos.

Saludos
Post by Joca
Hola a todos.
¿Como puedo hacer para guardar el texto que tengo en dos campos de texto, el
campo1 en la primera línea y el campo 2 en la segunda, para luego poder
recuperar la línea que quiera.?
Gracias.
Saludos.
Joca
Joca
2003-07-10 09:41:12 UTC
Permalink
Gracias. Me ha servido de ayuda, pero el texto que yo quiero grabar en el
archivo txt es el que se encuentra en los campos de texto y no un texto
especifico que yo escriba. ¿eso es posible?

Saludos
Joca
Post by Onix
-------- CREAR TXT --------
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.CreateTextFile("c:\archivoprueba.txt", True)
fso.WriteLine("Esto es una prueba en la primera linea.")
fso.WriteLine("Esto es una prueba en la segunda linea.")
fso.Close
----------------------------
-------- LEER TXT ---------
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.OpenTextFile("c:\archivoprueba.txt", 1) '1 para leer, 2
para escribir
LeerLíneaEnArchivoDeTexto = archivoTXT.ReadLine
----------------------------
Tambien puedes usar ReadAll para coger todo el contenido del txt.
En la ayuda del visual teclea FileSystemObject para obtener más metodos.
Saludos
Post by Joca
Hola a todos.
¿Como puedo hacer para guardar el texto que tengo en dos campos de
texto,
Post by Onix
el
Post by Joca
campo1 en la primera línea y el campo 2 en la segunda, para luego poder
recuperar la línea que quiera.?
Gracias.
Saludos.
Joca
Joca
2003-07-10 09:50:52 UTC
Permalink
Gracias, de esta forma guardo lo q tengo en la caja de texto, lo pongo por
si alguien tiene mi misma duda.

listin.WriteLine (Text1.Text)
Post by Joca
Gracias. Me ha servido de ayuda, pero el texto que yo quiero grabar en el
archivo txt es el que se encuentra en los campos de texto y no un texto
especifico que yo escriba. ¿eso es posible?
Saludos
Joca
Post by Onix
-------- CREAR TXT --------
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.CreateTextFile("c:\archivoprueba.txt", True)
fso.WriteLine("Esto es una prueba en la primera linea.")
fso.WriteLine("Esto es una prueba en la segunda linea.")
fso.Close
----------------------------
-------- LEER TXT ---------
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.OpenTextFile("c:\archivoprueba.txt", 1) '1 para
leer,
Post by Joca
2
Post by Onix
para escribir
LeerLíneaEnArchivoDeTexto = archivoTXT.ReadLine
----------------------------
Tambien puedes usar ReadAll para coger todo el contenido del txt.
En la ayuda del visual teclea FileSystemObject para obtener más metodos.
Saludos
Post by Joca
Hola a todos.
¿Como puedo hacer para guardar el texto que tengo en dos campos de
texto,
Post by Onix
el
Post by Joca
campo1 en la primera línea y el campo 2 en la segunda, para luego poder
recuperar la línea que quiera.?
Gracias.
Saludos.
Joca
Gusti
2003-09-21 17:44:18 UTC
Permalink
Ya que se está hablando del "Scripting.FileSystemObject", sucede que en
algunos sistemas operativos (Windows 95, NT), se produce un error al usar
ese objeto en un exe de Vb6. ¿Alguien sabe como solucionarlo?
Gracias, Gusti
Fijate en el 1 o el 2 de OpenTextFile, el 1 es para cuando lo abres solo
para leer y el 2 cuando lo abres para escribir
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.OpenTextFile("c:\archivoprueba.txt", 2) '1 para
leer,2
para escribir
fso.WriteLine("Nueva linea")
x
2003-09-22 14:17:11 UTC
Permalink
Para que usar FileSystemObject, si VB permite de forma nativa trabajar con
ficheros de texto

Open "Pepe.txt" for Output as #1
Print #1,"Hola maco com te dius"
Close #1

...etc.
Post by Gusti
Ya que se está hablando del "Scripting.FileSystemObject", sucede que en
algunos sistemas operativos (Windows 95, NT), se produce un error al usar
ese objeto en un exe de Vb6. ¿Alguien sabe como solucionarlo?
Gracias, Gusti
Fijate en el 1 o el 2 de OpenTextFile, el 1 es para cuando lo abres solo
para leer y el 2 cuando lo abres para escribir
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.OpenTextFile("c:\archivoprueba.txt", 2) '1 para
leer,2
para escribir
fso.WriteLine("Nueva linea")
Gusti
2003-09-25 06:50:11 UTC
Permalink
Sólo lo uso cuando quiero saber la fecha y hora de un fichero. Por ejemplo
para restaurar copias de seguridad. ¿Alguien sabe otra forma de ver la fecha
y hora de un archivo?.
Gusti.
Post by x
Para que usar FileSystemObject, si VB permite de forma nativa trabajar con
ficheros de texto
Open "Pepe.txt" for Output as #1
Print #1,"Hola maco com te dius"
Close #1
...etc.
Post by Gusti
Ya que se está hablando del "Scripting.FileSystemObject", sucede que en
algunos sistemas operativos (Windows 95, NT), se produce un error al usar
ese objeto en un exe de Vb6. ¿Alguien sabe como solucionarlo?
Gracias, Gusti
Fijate en el 1 o el 2 de OpenTextFile, el 1 es para cuando lo abres solo
para leer y el 2 cuando lo abres para escribir
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.OpenTextFile("c:\archivoprueba.txt", 2) '1 para
leer,2
para escribir
fso.WriteLine("Nueva linea")
x
2003-09-25 09:47:31 UTC
Permalink
Entonces usa FileDateTime

"Devuelve un valor de tipo Variant (Date) que indica la fecha y hora en que
un archivo fue creado o modificado por última vez.

Sintaxis:

FileDateTime(nombre_ruta)

Elargumento requerido nombre_ruta es unaexpresión de cadena que especifica
un nombre de archivo. Puede incluir el directorio o carpeta y la unidad de
disco."

Pos eso...
Post by Gusti
Sólo lo uso cuando quiero saber la fecha y hora de un fichero. Por ejemplo
para restaurar copias de seguridad. ¿Alguien sabe otra forma de ver la fecha
y hora de un archivo?.
Gusti.
Post by x
Para que usar FileSystemObject, si VB permite de forma nativa trabajar con
ficheros de texto
Open "Pepe.txt" for Output as #1
Print #1,"Hola maco com te dius"
Close #1
...etc.
Post by Gusti
Ya que se está hablando del "Scripting.FileSystemObject", sucede que en
algunos sistemas operativos (Windows 95, NT), se produce un error al
usar
Post by x
Post by Gusti
ese objeto en un exe de Vb6. ¿Alguien sabe como solucionarlo?
Gracias, Gusti
Fijate en el 1 o el 2 de OpenTextFile, el 1 es para cuando lo abres
solo
Post by x
Post by Gusti
para leer y el 2 cuando lo abres para escribir
Set fso = CreateObject("Scripting.FileSystemObject")
Set archivoTXT = fso.OpenTextFile("c:\archivoprueba.txt", 2) '1 para
leer,2
para escribir
fso.WriteLine("Nueva linea")
Gusti
2003-09-27 08:07:53 UTC
Permalink
Gracias, funciona perfectamente. Tantos años con el Visual Basic y sin saber
que existía FileDateTime()...., un placer haberme desembarazado del
FileSystemObject.
En general procuro programar utilizando las menos librerías, ocx etc
posibles. Ni siquiera utilizo motores de bases de datos (Access, DBase...),
con el "Type"... "End Type" defino los registros y me arreglo perfectamente.
Con los años he comprobado que todo funciona mejor y mucho más rápido
creando y manejando uno mismo los ficheros y sus indexados si es necesario.
El problema surge al programar páginas Web.
Y ya que surge esta polémica, me gustaría saber opiniones sobre usar o no
las bases de datos.

Un saludo, Gusti.
Post by x
Entonces usa FileDateTime
"Devuelve un valor de tipo Variant (Date) que indica la fecha y hora en que
un archivo fue creado o modificado por última vez.
FileDateTime(nombre_ruta)
Elargumento requerido nombre_ruta es unaexpresión de cadena que especifica
un nombre de archivo. Puede incluir el directorio o carpeta y la unidad de
disco."
Pos eso...
Post by Gusti
Sólo lo uso cuando quiero saber la fecha y hora de un fichero. Por ejemplo
para restaurar copias de seguridad. ¿Alguien sabe otra forma de ver la
fecha
Post by Gusti
y hora de un archivo?.
Gusti.
Post by x
Para que usar FileSystemObject, si VB permite de forma nativa trabajar
con
Post by Gusti
Post by x
ficheros de texto
Open "Pepe.txt" for Output as #1
Print #1,"Hola maco com te dius"
Close #1
...etc.
Post by Gusti
Ya que se está hablando del "Scripting.FileSystemObject", sucede que
en
Post by Gusti
Post by x
Post by Gusti
algunos sistemas operativos (Windows 95, NT), se produce un error al
usar
Post by x
Post by Gusti
ese objeto en un exe de Vb6. ¿Alguien sabe como solucionarlo?
Gracias, Gusti
Fher
2003-09-28 01:58:22 UTC
Permalink
Post by Gusti
Gracias, funciona perfectamente. Tantos años con el Visual Basic y sin saber
que existía FileDateTime()...., un placer haberme desembarazado del
FileSystemObject.
En general procuro programar utilizando las menos librerías, ocx etc
posibles. Ni siquiera utilizo motores de bases de datos (Access, DBase...),
con el "Type"... "End Type" defino los registros y me arreglo
perfectamente.
Post by Gusti
Con los años he comprobado que todo funciona mejor y mucho más rápido
creando y manejando uno mismo los ficheros y sus indexados si es necesario.
El problema surge al programar páginas Web.
Y ya que surge esta polémica, me gustaría saber opiniones sobre usar o no
las bases de datos.
Hola Gusti,

Yo también procuro meter en archivos de texto todos los datos que sea
posible, al menos cuando trabajo con pequeñas bases de datos. Los datos los
guardo en un array (numero_registro, numero_campo), los ordeno y hago lo que
quiero con ellos. Esto me funciona perfectamente, no sé si será porque se
trata de bases de datos pequeñas, pues creo que puede haber problemas con la
memoria.

Respecto a las bases de datos Access, también las utilizo, pero lo hago sin
los controles VB para bases de datos. Nunca utilizo un control Data ni un
DataGrid, ni enlazo en tiempo de diseño controles con Recordsets. Por
ejemplo, para presentar varios registros en una tabla utilizo un FlexGrid.

Esto me permite un mayor control sobre la base de datos y los datos que
introduce el usuario, o al menos eso creo.

Saludos.

Fher.
Gusti
2003-09-28 17:30:53 UTC
Permalink
Hola Fher:

Mi forma de trabajar, suele ser crear un fichero aleatorio definiendo el
registro con Type...End Type y metiendo en un List con Sorted = True, uno de
los campos y en List.Itemdata(n) de cada linea del List el número de
registro correspondiente. Al pinchar sobre una línea del List saco el
registro y relleno la ficha con todos los datos. Casi siempre mantengo los
ficheros cerrados y sólo los abro cuando el usuario pincha en un elemento
del List o cuando he de grabar algo de la ficha que haya variado.
El List limita el número de registros a un número entero (unos 36000), que
suele ser suficiente para lo que programo. Si el fichero puede crecer mucho,
por ejemplo un fichero de análisis clínicos, lo que hago es que cada año se
abre un nuevo fichero o también uso el truco de poder ver sólo los registros
de un mes etc.

Cuando programaba en QBasic usaba mucho más los Array en memoria
(maravillosos Arrays en memoria de Qbasic... ¡que velocidad!). Ahora en
realidad el List hace las funciones de un Array.
La ventaja que le veo al List, es que puedo meter el campo que quiero en el
momento que quiero. Con un sólo fichero creado con Type...End Type tengo
tantos indexados como campos y el usuario ve en el List la lista de campos
que desee.

También utilizo frecuentemente el MSFlexGrid siempre que no hayan excesivos
registros, pero puro y duro sin enlazar nada, simplemente para presentar por
ejemplo una lista de registros y escribir encima de una celda con el típico
control Text superpuesto para cambiar el valor de un campo o bien para
informes que luego se imprimen. Siempre relleno los datos en el MSFlexGrid
con su valor Visible = False porque me di cuenta de que era mucho más rápido
así.
Como estoy harto de que el usuario me diga que justamente quiere hacer un
listado de un determinado número de campos en un determinado orden (opción
que no tiene el programa), ya no me caliento más la cabeza y meto en un menú
todos los campos que se pueden listar para que el usuario escoja los que
quiere ver en el FlexGrid en el orden que desee, y en otro menú ciertos
campos para que les pueda imponer ciertas condiciones, con eso por fin se
acabaron los caprichos para siempre.

Supongo que con una lista de datos muy grandes no hay más remedio que usar
bases de datos con sus motores asociados. Soy consciente de que en programas
normales no las necesito, otra cosa es cuando haces Webs, ya que Microsoft
no te deja otra opción.

Una limitación que le veo al Type...End Type, es cuando quieres usar campos
de texto de longitud variable, hay que sufrir mucho para conseguirlo, o al
menos yo sufro porque no se me ocurre otra cosa que ir metiendo los textos
en un fichero aleatorio con 2 campos, uno numérico y otro de texto. En el
primero introduzco el número del siguiente registro que hay que leer y en el
segundo el texto. El fichero se va llenando sin ningún orden y lo leo por
líneas pasando al registro que me indica el campo numérico, así hasta que
encuentro un campo numérico sin nada que me indica que es de momento el
último registro de ese texto variable. Siempre he pensado que tenía que
existir una forma más sencilla de hacerlo, pero nunca se me ha ocurrido...
Por si alguien sabe una solución mejor, hago lo siguiente:

Núm.Registro Campo 1 Campo2
1 3 texto 1 'El 3 indica que el siguiente
texto de la frase está en el registro 3
2 10 texto n
3 20 texto 2
...................................................

El problema es que como se corrompa un registro, se acaba la frase. A veces
como protección pongo un segundo campo numérico que señala al registro
anterior de la frase.
También hay que comerse mucho la cabeza cuando el usuario borra parte de una
frase y para reutilizar los registros anulados etc. En esto si que me da
mucha envidia Access.

Ya no me enrrollo más. Saludos, Gusti.
Post by Fher
Hola Gusti,
Yo también procuro meter en archivos de texto todos los datos que sea
posible, al menos cuando trabajo con pequeñas bases de datos. Los datos los
guardo en un array (numero_registro, numero_campo), los ordeno y hago lo que
quiero con ellos. Esto me funciona perfectamente, no sé si será porque se
trata de bases de datos pequeñas, pues creo que puede haber problemas con la
memoria.
Respecto a las bases de datos Access, también las utilizo, pero lo hago sin
los controles VB para bases de datos. Nunca utilizo un control Data ni un
DataGrid, ni enlazo en tiempo de diseño controles con Recordsets. Por
ejemplo, para presentar varios registros en una tabla utilizo un FlexGrid.
Esto me permite un mayor control sobre la base de datos y los datos que
introduce el usuario, o al menos eso creo.
Saludos.
Fher.
Manuel Conde
2003-09-29 07:59:41 UTC
Permalink
Yo creo ke os estais matando mucho la cabeza por no usar BDs.

Cierto es que antes se hacía muy lento el acceso a las BDs (y peor según se
programase bien o mal su tratamiento), pero hace ya al menos 3 años ke usar
BDs es la mejor opción con diferencia.

No sé, te invito a que pruebes alguno de mis programas públicos como
SimpleAgenda o SimpleTPV, que emplean BDs en access y verás que, aún
teniendo ordenadores antiguos (Pentium100, por ejemplo), la conexión y el
tratamiento de datos es inmediato.

Eso sí, tampoco empleo ningún sistema "automático" de campos enlazados,
simplemente empleo la conexión a la BD y los Recordsets, el resto lo enlazo
yo todo según me interese y empleo consultas SQL para todo.

--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Gusti
2003-10-01 22:08:59 UTC
Permalink
Entiendo lo que quieres decir, pero en mi caso supone un esfuerzo que creo
que no me compensa. Por el tiempo que llevo programando, desde 1980 o por
ahí,(Spectrum, QL, PC XT. Basic, Qbasic, Macro Assembler, VB3-4-5-6, pienso
que ya tengo mucha soltura con los simples ficheros aleatorios, pasarme a
las BDs da mucha pereza. A veces las uso cuando por ejemplo me pasan un
fichero en Access o en Excel que debo incorporar a algún fichero mío, pero
lo hago como paso intermedio nada más.
Tantos Comandos y Funciones como existen ahora en cualquier lenguaje, creo
que le recorta bastante la creatividad al programador, se vuelve más
aburrido programar.
En fin, ya veremos... no me gusta decir nunca jamás a nada.
Un saludo, Gusti.
http://www.magisfor.com
Post by Manuel Conde
Yo creo ke os estais matando mucho la cabeza por no usar BDs.
Cierto es que antes se hacía muy lento el acceso a las BDs (y peor según se
programase bien o mal su tratamiento), pero hace ya al menos 3 años ke usar
BDs es la mejor opción con diferencia.
No sé, te invito a que pruebes alguno de mis programas públicos como
SimpleAgenda o SimpleTPV, que emplean BDs en access y verás que, aún
teniendo ordenadores antiguos (Pentium100, por ejemplo), la conexión y el
tratamiento de datos es inmediato.
Eso sí, tampoco empleo ningún sistema "automático" de campos enlazados,
simplemente empleo la conexión a la BD y los Recordsets, el resto lo enlazo
yo todo según me interese y empleo consultas SQL para todo.
--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Manuel Conde
2003-10-02 07:36:58 UTC
Permalink
Bueno, supongo ke si no te da pegas ni te roba mucho tiempo es otra opción
como las BDs.

Sin embargo es posible ke si pruebas ya no kieras volver a los ficheros
aleatorios.

Te cito simplemente 3 ventajas enormes:

- Toda la BD en un solo archivo (imagino que usas un archivo por cada
"tabla") -> Copias de seguridad, seguridad de datos, etc más fácil.
- Selección, borrado, actualización de datos instantanea con un solo comando
(nada de buscar, posicionarse y ejecutar) mediante SQL.
- Integridad de datos mediante relaciones (nada de comprobar manualmente si
el borrar un dato afecta a otros).

La lista sigue...

Eso sí, si kieres probar alguna vez, métete directamente con SQL, olvídate
de usar los recordsets para edicion-inserción (lo típico de los ejemplos de
VB) y nada de enlazar campos, hazlo tú a pelo. Serás más feliz. :)

--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Post by Gusti
Entiendo lo que quieres decir, pero en mi caso supone un esfuerzo que creo
que no me compensa. Por el tiempo que llevo programando, desde 1980 o por
ahí,(Spectrum, QL, PC XT. Basic, Qbasic, Macro Assembler, VB3-4-5-6, pienso
que ya tengo mucha soltura con los simples ficheros aleatorios, pasarme a
las BDs da mucha pereza. A veces las uso cuando por ejemplo me pasan un
fichero en Access o en Excel que debo incorporar a algún fichero mío, pero
lo hago como paso intermedio nada más.
Tantos Comandos y Funciones como existen ahora en cualquier lenguaje, creo
que le recorta bastante la creatividad al programador, se vuelve más
aburrido programar.
En fin, ya veremos... no me gusta decir nunca jamás a nada.
Un saludo, Gusti.
http://www.magisfor.com
Gusti
2003-10-02 20:15:01 UTC
Permalink
Soy consciente de que SQL es necesario dominarlo.

-Últimamente y cada vez más, utilizo un sólo fichero aleatorio pasando de
hacer indexados y esas cosas. En el último programa que he hecho, uno de
ellos tiene una longitud de registro de 3016 Bytes que próximamente he de
ampliar (más abajo te pongo la estructura del registro). Como ya he
explicado, relleno un list con el campo que quiero o que quiere el usuario
ver y al pinchar sobre él se ve la ficha completa. Lo curioso es que
funciona perfectamente en multipuesto y varios usuarios pueden acceder y
escribir en el mismo registro sin problemas.

-Para la copia de seguridad pongo siempre un programilla de copia al salir
en donde aparece un list con los ficheros que se van a copiar y otro con los
ficheros que se van copiando y con el FileCopy pienso que lo resuelvo bien y
rápido, se copia en otro ordenador de la red o en otro disco duro. Restauro
igual pero a la inversa.

-Borrar, borro poniendo un 1 en un campo byte del registro. Luego al dar de
alta un nuevo registro, antes compruebo si hay alguno borrado para usarlo.

-La actualización de datos es siempre instantánea, ya que el PUT lo guarda
sin más.
Buscar, busco en el list en donde tengo metido uno de los campos, si es
necesario buscar por más de un campo, el truco que hago es añadir el campo a
la derecha de cada Ittem del list sin que el usuario los pueda ver, o bien
presentar ese campo en el list volviendo a cargar el fichero.

-Para mayor seguridad los ficheros siempre están cerrados.

Fichero de un libro recetario de fórmulas:

Public Const kr = 3016 'Longitud del registro
Type Recetario
RNul As Byte
RETiqueta As String * 80 'Para Texto fijo en etiqueta
RTotalF As Double
RRegProsp As Long 'registro que ocupa el prospecto
RNomProsp As String * 23 'Nombre del fichero Prospecto
RNum As Long 'Número de registro del apunte
RFarmacia As String * 30 'farmacia que encarga la fórmula
RFormula As String * 50
RPaciente As String * 35
RMedico As String * 30
RCantTotal As Currency
RElaboracion As String * 10
RElaboracion8 As String * 8
RTipo As String * 4 'tipo de fórmula
RColegiado As String * 12 'ojo este no existia
RHonorariosFijos As String * 40 'Honorarios fijos
RNumRegReceta As Long 'Número registro recetario farmacia para version 4
RNada2 As String * 10
RDtoPaciente As String * 1 'Si el descuento es al paciente se pone una P
RIvaPorcien As Integer
RNumFar As Long 'numero de la farmacia
RDeudaReceta As Byte
RDNI As String * 10
RCaducidad As String * 15
RNombreFN As String * 48
RAceptacion As Boolean
RHonorarios As Currency
RProductos As Currency
REnvase As Currency
RIva As Currency
RDescuento As Currency
RDesc100(1 To 3) As Integer '(de la ficha del paciente, descuento en % de
honorarios, productos y total)
RTotal As Currency
RPro(1 To 25) As String * 40 'Productos
RCant(1 To 25) As Currency 'Cantidad
RUni(1 To 25) As String * 2 'Unidades
RCantT(1 To 25) As Currency 'Cantidadtotal
RPrecio(1 To 25) As Double ' Precio
RPa_ex(1 To 25) As String * 2 'Pa-ex
RAsss(1 To 25) As String * 2 'ASSS
REnvFoto(1 To 25) As String * 2 'Envase
RPsic(1 To 25) As String * 2 'Psicotropo
RAut(1 To 25) As String * 2 'Automático
RLote(1 To 25) As String * 8 'Num de lote
RCodigo(1 To 25) As String * 6 'Código de cada producto
RNumInt(1 To 25) As Long 'Número interno de cada producto
RFarCab As String * 30 'Nombre de la cabecera de la farmacia (Cl.Ob2)
RFarDir As String * 30 'Direccion de la farmacia
RFarPob As String * 30 'Poblacion de la farmacia
RFarTf As String * 10 'Telefono de la farmacia
RAportacion As Currency
RAporTantoporcien As String * 4
RASSSR As Byte
RNtot As Integer
RContabilizado As Byte
RNumLote As String * 12
RTextoFijoEtiqueta As String * 40
End Type
Public RR As Recetario

En realidad este fichero está relacionado con este otro que aún tiene un
registro más largo y me sirve para meter texto de una hoja de elaboración de
fórmulas magistrales. No me caliento mucho la cabeza y aunque son 2 ficheros
diferentes, tienen el mismo número de registro uno con otro.

Public Const kel = 4880
Type Elaboracion
Elabor(60) As String * 80 '61 líneas
End Type
Public EB As Elaboracion

En fin, que a pesar de todo voy a aprender a usar SQL.

Un saludo, Gusti.
http://www.magisfor.com
Post by Manuel Conde
Bueno, supongo ke si no te da pegas ni te roba mucho tiempo es otra opción
como las BDs.
Sin embargo es posible ke si pruebas ya no kieras volver a los ficheros
aleatorios.
- Toda la BD en un solo archivo (imagino que usas un archivo por cada
"tabla") -> Copias de seguridad, seguridad de datos, etc más fácil.
- Selección, borrado, actualización de datos instantanea con un solo comando
(nada de buscar, posicionarse y ejecutar) mediante SQL.
- Integridad de datos mediante relaciones (nada de comprobar manualmente si
el borrar un dato afecta a otros).
La lista sigue...
Eso sí, si kieres probar alguna vez, métete directamente con SQL, olvídate
de usar los recordsets para edicion-inserción (lo típico de los ejemplos de
VB) y nada de enlazar campos, hazlo tú a pelo. Serás más feliz. :)
--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Manuel Conde
2003-10-03 08:46:44 UTC
Permalink
Post by Gusti
En fin, que a pesar de todo voy a aprender a usar SQL.
Pues te digo yo ke una vez te metas, no saldrás...

Yo, por el tema de las Palm, he tenido ke hacer al revés, porke las Palm no
soportan SQL, las BDs son en realidad ficheros secuenciales como los tratas
tú. Y claro, me encuentro bastante limitado en posibilidades, sobre todo a
la hora de buscar la info por más de un campo.

--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Gusti
2003-10-04 15:35:54 UTC
Permalink
Si sabes (o alguien sabe) de alguna Web buena sobre SQL para principiantes
te agradecería que me pasases la dirección a ver si me envicio un poco, te
advierto que estoy verde como una lechuga en el tema.

Supongo que cuando hablas de Palm te refieres a los ordenadores de mano. No
he manejado nunca uno, las cosas tan pequeñas no me convencen demasiado.
Tendrás menos recursos de software y hardware y ahora tienes que programar a
un nivel más bajo, seguro que te divertirás más.
No entiendo porqué dices que trato a mis ficheros como secuenciales si son
absolutamente aleatorios. Los leo secuencialmente una sola vez al entrar al
programa para rellenar un List con uno de los campos.

Un saludo, Gusti.
Post by Manuel Conde
Post by Gusti
En fin, que a pesar de todo voy a aprender a usar SQL.
Pues te digo yo ke una vez te metas, no saldrás...
Yo, por el tema de las Palm, he tenido ke hacer al revés, porke las Palm no
soportan SQL, las BDs son en realidad ficheros secuenciales como los tratas
tú. Y claro, me encuentro bastante limitado en posibilidades, sobre todo a
la hora de buscar la info por más de un campo.
--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Fher
2003-10-05 05:06:01 UTC
Permalink
Hay un archivo de ayuda llamado sql35.hlp, o algo parecido, que lleva una
ayuda muy completa. No sé si viene con Visual Basic o con Access.

Saludos.

Fher.
Post by Gusti
Si sabes (o alguien sabe) de alguna Web buena sobre SQL para principiantes
te agradecería que me pasases la dirección a ver si me envicio un poco, te
advierto que estoy verde como una lechuga en el tema.
Supongo que cuando hablas de Palm te refieres a los ordenadores de mano. No
he manejado nunca uno, las cosas tan pequeñas no me convencen demasiado.
Tendrás menos recursos de software y hardware y ahora tienes que programar a
un nivel más bajo, seguro que te divertirás más.
No entiendo porqué dices que trato a mis ficheros como secuenciales si son
absolutamente aleatorios. Los leo secuencialmente una sola vez al entrar al
programa para rellenar un List con uno de los campos.
Un saludo, Gusti.
Post by Manuel Conde
Post by Gusti
En fin, que a pesar de todo voy a aprender a usar SQL.
Pues te digo yo ke una vez te metas, no saldrás...
Yo, por el tema de las Palm, he tenido ke hacer al revés, porke las Palm
no
Post by Manuel Conde
soportan SQL, las BDs son en realidad ficheros secuenciales como los
tratas
Post by Manuel Conde
tú. Y claro, me encuentro bastante limitado en posibilidades, sobre todo a
la hora de buscar la info por más de un campo.
--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Fher
2003-10-05 07:42:40 UTC
Permalink
El archivo de ayuda es jetsql35.hlp, y viene con la ayuda de Visual Basic,
al menos con la versión 5 que yo tengo.

Saludos.

Fher.
Post by Fher
Hay un archivo de ayuda llamado sql35.hlp, o algo parecido, que lleva una
ayuda muy completa. No sé si viene con Visual Basic o con Access.
Saludos.
Fher.
Fernando
2003-10-05 22:46:15 UTC
Permalink
jetsql40.chm, viene en el office2000, y es posterior

Salu2
Fernando
Post by Fher
El archivo de ayuda es jetsql35.hlp, y viene con la ayuda de Visual Basic,
al menos con la versión 5 que yo tengo.
Saludos.
Fher.
Post by Fher
Hay un archivo de ayuda llamado sql35.hlp, o algo parecido, que lleva una
ayuda muy completa. No sé si viene con Visual Basic o con Access.
Saludos.
Fher.
Gusti
2003-10-07 06:00:57 UTC
Permalink
Gracias a todos, ya he cogido el jetsql40.chm del Office 2000, aunque de
momento estoy muy liado para aprender nada...
Gusti
Post by Fher
Hay un archivo de ayuda llamado sql35.hlp, o algo parecido, que lleva una
ayuda muy completa. No sé si viene con Visual Basic o con Access.
Saludos.
Fher.
Manuel Conde
2003-10-06 08:22:26 UTC
Permalink
Na, lo de llamar a tus ficheros secuenciales es una forma de hablar pa yo
entenderme. En Palm, cada vez que necesito buscar varios registros por dos
campos, si no quiero recorrer la BD entera, lo que hago es ordenar la BD por
esos 2 campos, realizar la búsqueda (que me posiciona en el primer registro
adecuado) por el primer campo y, a partir de ahí, buscar secuencialmente
hasta que no coincide el segundo campo con el valor buscado (por eso lo
llamo secuencial). Esto me evita recorrer la BD entera (que si es muy grande
se hace lento, lento, lento en una Palm), aunque pierdes el tiempo del
reordenamiento (que es otro comando).

En la Palm puedes realizar una búsqueda por un único campo a la vez, lo cual
es un auténtico "coñazo" para búsquedas más complejas, limitación que no
existe en SQL. Todo funciona como lo estás haciendo tú: adición con un
comando, edición con un posicionamiento en el registro y luego editarlos,
borrado con un comando... pero claro, con la limitación de trabajar con
índices mientras que con SQL no tienes que preocuparte de saber el nº que
corresponde al registro que quieres tratar (entre comillas, porque un
principio básico del SQL es que definas la BD correctamente, y cada tabla
lleva una combinación de campos que identifican unívocamente un registro:
esto se llama clave primaria, por ejemplo: en una tabla de facturas, el
NUM_FACTURA es la clave primaria y cuano tratas una factura, sólo necesitas
conocer ese nº para cualquier cambio).

Como te han indicado, hay numerosos manuales de SQL. Mismo escribe en google
"Manual SQL" y te saldrán mogollón de referencias. No te preocupes porque es
realmente sencillo de aprender, al menos lo básico con lo que moverse, que
da mucho juego. Especializarse en cosultas complicadas es lo difícil, aunque
tampoco tanto.

Practica y si tienes dudas plantéalas, te las intentaremos resolver.

El principal problema que tendrás será diseñar la BD correctamente (tercera
forma normal). Busca un manual de diseño de BDs. El diseño correcto es
básico para que todo vaya bien.

--
Manuel Conde (http://manuel.conde.name)
Maicrosoft LVP (www.maicas.net)
Post by Gusti
Si sabes (o alguien sabe) de alguna Web buena sobre SQL para principiantes
te agradecería que me pasases la dirección a ver si me envicio un poco, te
advierto que estoy verde como una lechuga en el tema.
Supongo que cuando hablas de Palm te refieres a los ordenadores de mano. No
he manejado nunca uno, las cosas tan pequeñas no me convencen demasiado.
Tendrás menos recursos de software y hardware y ahora tienes que programar a
un nivel más bajo, seguro que te divertirás más.
No entiendo porqué dices que trato a mis ficheros como secuenciales si son
absolutamente aleatorios. Los leo secuencialmente una sola vez al entrar al
programa para rellenar un List con uno de los campos.
Un saludo, Gusti.
luis
2003-07-13 15:13:33 UTC
Permalink
"Joca" <***@siadv.com> escribi� en el mensaje news:bej8id$i7h$***@nsnmrro2-gest.nuria.telefonica-


Hola:

Por la gilipolleces que preguntas y teniendo en cuenta la gran cantidad
de información a la que hoy en dia se tiene acceso en internet ( sin contar
con la ayuda de vb) demuestras una capacidad nula de buscarte la vida, asi
que te voy a dar un consejo gratis. NO TE DEDIQUES A INTENTAR PROGRAMAR, no
es lo tuyo.

Un saludo:

Luis Cuesta
Fher
2003-07-13 17:41:05 UTC
Permalink
También tienes el metodo "tradicional", que es el que yo empleo:

'Para abrir el archivo, si no existe lo crea, puedes añadir la ruta del
archivo si no está en el mismo directorio

open "archivo.txt" for output as #1
write #1, texto_que quieras
close #1

'Para leer: en cada instrucción line input lee una línea completa del
archivo txt

Dim Texto as string 'Variable para guardar el contenido de la línea leída
open "archivo.txt" for input as #1
do until eof(1)
line input #1, Texto
loop
close #1

Salu2

Fher
Post by Joca
Hola a todos.
¿Como puedo hacer para guardar el texto que tengo en dos campos de texto, el
campo1 en la primera línea y el campo 2 en la segunda, para luego poder
recuperar la línea que quiera.?
Gracias.
Saludos.
Joca
Continúe leyendo en narkive:
Loading...