Principales respuestas
stdout

Pregunta
-
Tengo un problema al querer usar un comando en Visual Basic 6.0 es un enlace con postgres con un comando que se llama copy el ejemplo es el siguiente:
COPY Arthist TO 'c:/archivos de programa/siaciipg/exportar/Arthist.txt' using delimiters '|' WITH NULL AS ' '
pero para poder ejecutar este codigo tengo que tener permisos de Superusuario. Por lo que solo puedo hacerlo de esta manera
COPY Arthist TO stdout using delimiters '|' WITH NULL AS ' '
pero ahora necesito como redireccionar el stdout a un archivo de texto para poderlo guardar, alguien me puede decir como, agradesco de antemano su apoyo. saludos.
- Cambiado Toni Recio [Techdencias]Moderator domingo, 7 de junio de 2009 7:18 ([Loc]From:Lenguaje VB.NET)
Respuestas
-
¿No te funciona lo de lanzar el comando poniendo al final "mayor que fchero"? Esto lo deberías poder hacer sin problemas con un "SHELL" desde VB6. Si no te funciona directamente, siempre puedes poner el "comando >fichero" dentro de un fichero .BAT y ejecutar ese .BAT con el comando SHELL desde VB6.
- Marcado como respuesta Toni Recio [Techdencias]Moderator domingo, 7 de junio de 2009 7:18
Todas las respuestas
-
La forma más sencilla de redireccionar el stdout de un programa a un fichero es poniendo >fichero al final del comando:
COPY Arthist TO stdout using delimiters '|' WITH NULL AS ' ' >fichero.txt
Pero esto no tiene nada que ver con Visual Studio, sino que es el propio intérprete de comandos el que hace esta operación cuando tecleas en consola un comando como el anterior.
Si quieres hacer lo mismo desde un programa en VB.Net, utiliza Process.Start para lanzar el comando, y pásale como argumento un ProcessStartInfo especificando su propiedad RedirectStandardOutput. Luego lees el StandardOutput del objeto Process, que te da un Stream, y puedes enviar el conenido del Stream a donde quieras, por ejemplo a un archivo.
-
bueno en este caso no cuento con esa version del visual, de hecho lo estoy haciendo con VB 6.0, y pues ya estuve buscando la manera y creo que voy a terminar haciendolo a pie, recorriendo el recordset y con write, aqui lo malo es que son muchas tablas, asi que voy a tener que escribirlo con fields para evitar mucho codigo, como en C se puede redireccionar el stdout desde codigo pense que aqui se podia hacer lo mismo, si tienes otro comentario pero del vb 6.0, te lo agradeceria, el objetivo final es escribir un archivo de texto que sea sacado de una tabla. gracias.
-
¿No te funciona lo de lanzar el comando poniendo al final "mayor que fchero"? Esto lo deberías poder hacer sin problemas con un "SHELL" desde VB6. Si no te funciona directamente, siempre puedes poner el "comando >fichero" dentro de un fichero .BAT y ejecutar ese .BAT con el comando SHELL desde VB6.
- Marcado como respuesta Toni Recio [Techdencias]Moderator domingo, 7 de junio de 2009 7:18