Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Para bajar y subir informacion (https://www.clubdelphi.com/foros/showthread.php?t=81301)

luchifer 31-10-2012 20:55:17

Para bajar y subir informacion
 
Utilizo la rutina siguiente, para bajar y subir informacion entre dos o mas computadoras que no estan en red.

procedure TFbaja_inf.BprocesaClick(Sender: TObject);
var linea:string;
begin
linea:='cmd /k bcp "select * from bd_cona..cta where asoc in (select cod from bd_cona..ltablas where tab='+car+'ASO'+car+' and tiene='+car+'1'+car+')" queryout Bcta.txt -c -T';
try
WinExec( Pchar(linea), SW_Hide);
except
MessageDlg('No se ha podido bajar el archivo cta.', mtWarning, [mbOK], 0);
exit;
end;

showmessage('Termino el proceso de bajado');
end;


Y para subir el archivo utilizo:
linea:='cmd /k bcp bd_cona..cta in bcta.txt -c -T';
try
WinExec( Pchar(linea), SW_Hide);
except
MessageDlg('No se ha podido subir el archivo cta.', mtWarning, [mbOK], 0);
exit;
end;

En Windows XP Me funciona muy bien. No asi en windows 7 ni tampoco me reporta error. Si alguien pudiese ayudarme le estaria muy agradecido.

roman 31-10-2012 21:06:34

He movido tu tema de foro ya que el foro de Trucos no es para hacer preguntas.

También te pido que cuando publiques código utilices las etiquetas adecuadas. No estaría mal una lectura de la guía de estilo.

// Saludos

nlsgarcia 01-11-2012 04:17:36

luchifer,
Cita:

Tomado de la Ayuda en Delphi 7 (Win32 Developer's References):

The WinExec function runs the specified application.

This function is provided for compatibility with earlier versions of Windows. For Win32-based applications, use the CreateProcess
function.
Preguntas:

1- ¿Si ejecutas el comando bcp "select * from bd_cona..cta where asoc in (select cod from bd_cona..ltablas where tab='+car+'ASO'+car+' and tiene='+car+'1'+car+')" queryout Bcta.txt -c -T directamente en la consola de Windows 7 funciona?

2- ¿Por que cmd /k y no cmd /c?, con /c ejecuta el comando y termina la instancia de consola, con /k la instancia se mantiene abierta.

3- ¿Es bd_cona..cta or bd_cona.cta?

Prueba cambiar WinExec por ShellExecute:
Código Delphi [-]
ShellExecute(0, nil, 'cmd.exe', '/C  bcp "select * from bd_cona..cta where asoc in (select cod from bd_cona..ltablas where tab='+car+'ASO'+car+' and tiene='+
                   car+'1'+car+')" queryout Bcta.txt -c -T', nil, SW_HIDE);
Esa es la idea general, tienes que probarla.

Espero sea útil :)

Nelson.

nlsgarcia 01-11-2012 05:15:41

luchifer,

La función ShellExecute debería funcionar de esta forma:
Código Delphi [-]
var
   s1 : String;
   s2 : array[0..255] of char;

begin

   s1 :=  '/C  bcp "select * from bd_cona..cta where asoc in (select cod from bd_cona..ltablas where tab='+car+'ASO'+car+' and tiene='+car+'1'+car+')" queryout Bcta.txt -c -T';

   StrPCopy(s2,s1);

   ShellExecute(0, nil, 'cmd.exe',s2, nil, SW_HIDE);

end;
Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 09:26:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi