Bonjour,

Je dois faire un import d'un fichier txt (séparateur taille fixe) dans une base db2, a partir d'un exe réalisé en c# (.NET 1.0 malheureusement)

la seule manip qui a l'air de fonctionner (et la plus facile a maintenir en cas de changement dans le fichier), est que mon exe principal lance un .bat via db2cmd.

mais j'ai quelques soucis :
bug 1 : la fenetre CLP s'affiche malgré la demande formelle de le cacher
bug 2 : si je ne mets pas en pause mon programme pendant une minute, il continue dans sa lancée, et le process de traitement de la table commence trop tot si le fichier est lourd (import toujours en cours)
bug 3 : la fenetre CLP ne se ferme pas.

Voici donc mon code (version light)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
static int Main(string[] args)
{
 
	try
	{
		string fichier = "fichier.txt" ;
		LaunchCommandLineApp(fichier) ;	
		LogInfo("Fin du load") ;
	}
	catch(Exception e) 		{		}
 
	return v_return;
}
 
static void LaunchCommandLineApp(string vFile)
{
	Process proc = new Process();		
	proc.StartInfo.CreateNoWindow = true;
	proc.StartInfo.UseShellExecute = false;
	proc.StartInfo.RedirectStandardOutput = true;
	proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden ;
 
	proc.StartInfo.FileName = "db2cmd";
	proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
	proc.StartInfo.Arguments = "c:\loadfile.bat " + vFile    ; 	
 
	try
	{
 
		proc.Start();
		// verification que l'on ne passe pas a la suite trop vite 
		System.Threading.Thread.Sleep(60000); // 1 minute 
		string v_Output = proc.StandardOutput.ReadToEnd().ToString();
		proc.WaitForExit();
		if (proc.HasExited)
			LogInfo("Exited with code " + proc.ExitCode, p_toolBox) ;
	}
	catch
	{
		// Log error.
	}
}

Si vous avez des conseils, je suis preneuse.

Merci d'avance.
K.