84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Text;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using System.Data;
 | 
						|
using System.Data.Sql;
 | 
						|
using System.Data.SqlClient;
 | 
						|
using System.IO;
 | 
						|
 | 
						|
namespace PromsGetDoc
 | 
						|
{
 | 
						|
	class Program
 | 
						|
	{
 | 
						|
		// arguments are:
 | 
						|
		//	docId
 | 
						|
		//	filename/pathname for resulting word doc
 | 
						|
		//	sql server name
 | 
						|
		//	database name
 | 
						|
 | 
						|
		// Can be run from command line or from macro in microsoft office tools as shown here:
 | 
						|
		//		Sub Macro1()
 | 
						|
		//      Call Shell("""Path_To_Exe\PromsGetDoc.exe"" 5 C:\temp\sample3.doc .\sqlexpress veproms_app", vbNormalFocus)
 | 
						|
		//		End Sub
 | 
						|
		static void Main(string[] args)
 | 
						|
		{
 | 
						|
			if (args.Length != 4)
 | 
						|
			{
 | 
						|
				Console.WriteLine("Need 4 arguments: DocId, Output File/Path, Server Name, Database Name");
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			Console.WriteLine("Volian Enterprises Proprietary Software - Copyright 2015 \r\n\n" +
 | 
						|
				"To be used under the Volian PROMS End User License Agreement (EULA).\r\n\nFor AP-1000 Westinghouse internal use only.\r\n"); 
 | 
						|
			byte[] doc = null;
 | 
						|
			int _docId = int.Parse(args[0]);
 | 
						|
			string connectionStr = string.Format(@"Data Source={0};Initial Catalog={1};Integrated Security=True", args[2], args[3]);
 | 
						|
			try
 | 
						|
			{
 | 
						|
				using (SqlConnection cn = new SqlConnection(connectionStr))
 | 
						|
				{
 | 
						|
					cn.Open();  // do I need this?
 | 
						|
					using (SqlCommand cm = cn.CreateCommand())
 | 
						|
					{
 | 
						|
						cm.CommandType = CommandType.StoredProcedure;
 | 
						|
						cm.CommandText = "getDocument";
 | 
						|
						cm.Parameters.AddWithValue("@DocID", _docId);
 | 
						|
						cm.CommandTimeout = 100;
 | 
						|
						using (SqlDataReader dr = cm.ExecuteReader())
 | 
						|
						{
 | 
						|
							if (!dr.Read())
 | 
						|
							{
 | 
						|
								Console.WriteLine("ERROR: No Record Found");
 | 
						|
								return;
 | 
						|
							}
 | 
						|
							doc = (byte[])dr.GetValue(2);
 | 
						|
						}
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				Console.WriteLine("ERROR: Could not access/read data. Check server and database name. " + ex.Message);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			if (doc != null)
 | 
						|
			{
 | 
						|
				try
 | 
						|
				{
 | 
						|
					FileInfo fi = new FileInfo(args[1]);
 | 
						|
					FileStream fs = fi.Create();
 | 
						|
					fs.Write(doc, 0, doc.Length);
 | 
						|
					fs.Close();
 | 
						|
					Console.WriteLine("{0} was successfully created.", fi.FullName);
 | 
						|
				}
 | 
						|
				catch (Exception ex1)
 | 
						|
				{
 | 
						|
					Console.WriteLine("ERROR: Could not write Word file. " + ex1.Message);
 | 
						|
					return;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |