C#.net 2005 เชื่อมต่อกับ SAP อย่างไร รบกวนผู้รู้หน่อยคับ.. คือผมเขียนเว็บ php แล้วเกิดปัญหาในการเชื่อมต่อกับฐานข้อมูล
C#.NET ไม่ยากน่ะครับ ส่วน SAP ผมว่าจะต้องถามว่าเค้าจะให้ Connect ผ่าน Connector ตัวไหนได้บ้างครับ
Date :
2009-12-09 12:18:06
By :
webmaster
ตอนนี้ผมได้โค๊ดอันนี้มาคับ ใครช่วยอธิบายให้ผมหน่อยคับ
ผมไม่เข้าใจจริงๆ.. ระดับเริ่มต้นเลยก็ว่าได้คับ
using System;
using System.Collections.Generic;
using System.Text;
using Tamir.SharpSsh.jsch;
using System.IO;
using System.Data.SqlClient;
namespace SFTP_FI_OUTBOUND
{
class Program
{
static void Main(string[] args)
{
try
{
JSch jsch = new JSch();
//Username & Ip Address
Session session = jsch.getSession("root", "10.33.102.15", 22);
UserInfo ui = new MyUserInfo(); ;
//Password
session.setPassword("5545");
session.setUserInfo(ui);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp c = (ChannelSftp)channel;
//1.Copy file 2.Paste 3.Delete
System.Collections.ArrayList vv = c.ls("/DEV/FIAA2/outbound/");
String localpath = "C:\\FIAA2_OUTBOUND\\";
String completePath = "C:\\FIAA2_OUTBOUND\\completeTransfer\\";
String remoteAPath = "/DEV/FIAA2/archive/";
String remoteOpath = "/DEV/FIAA2/outbound/";
if (vv != null)
{
for (int i = 0; i < vv.Count; i++)
{
object obj = vv[i];
if (obj is ChannelSftp.LsEntry)
{
ChannelSftp.LsEntry ll = (ChannelSftp.LsEntry)obj;
Console.WriteLine(ll.getFilename());
if (ll.getFilename().startsWith("ZFIAAI_OUTBOUND"))
{
c.get(remoteOpath + ll.getFilename(), localpath);
c.put(localpath + ll.getFilename(), remoteAPath + ll.getFilename());
c.rm(remoteOpath + ll.getFilename());
}
}
}
}
readFie();
Environment.Exit(0);
c.disconnect();
}
catch (Exception e2)
{
Console.WriteLine(e2.Message);
}
}
static void readFie()
{
String line;
try
{
DirectoryInfo myDirInfo;
myDirInfo = new DirectoryInfo("C:\\FIAA2_OUTBOUND\\");
FileInfo[] arrFileInfo = myDirInfo.GetFiles("*.*");
StreamReader sr;
SqlCommand cmd;
string[] sp;
SqlConnection conn = DBConnection.getConnection();
conn.Open();
foreach (FileInfo myFileInfo in arrFileInfo)
{
sr = new StreamReader("C:\\FIAA2_OUTBOUND\\" + myFileInfo.Name);
line = sr.ReadLine();
while (line != null)
{
sp = line.Split(new string[] { "|" }, StringSplitOptions.None);
String sql = "insert into assetmonitoringtemp " +
"(companyCode,assetMain,assetSub,objid,fiscalYear,descr,assetCLass,"+
"capitalized,quanlity,uom,assetSuperNumber,costCenter,responsibleCctr," +
"personalNo,employeeName,referenceNo,documentType,amount,kansw,bchwrtLfd," +
"status) " +
"values" +
"(@companyCode,@assetMain,@assetSub,@objid,@fiscalYear,@descr,@assetCLass," +
"@capitalized,@quanlity,@uom,@assetSuperNumber,@costCenter,@responsibleCctr," +
"@personalNo,@employeeName,@referenceNo,@documentType,@amount,@kansw,@bchwrtLfd," +
"@status)";
SqlParameter companyCode = new SqlParameter("@companyCode", sp[0].ToString());
SqlParameter assetMain = new SqlParameter("@assetMain", sp[1].ToString());
SqlParameter assetSub = new SqlParameter("@assetSub", sp[2].ToString());
SqlParameter objid = new SqlParameter("@objid", sp[3].ToString());
SqlParameter fiscalYear = new SqlParameter("@fiscalYear", System.Data.SqlDbType.Int);
SqlParameter descr = new SqlParameter("@descr", sp[5].ToString());
SqlParameter assetCLass = new SqlParameter("@assetCLass", sp[6].ToString());
SqlParameter capitalized = new SqlParameter("@capitalized", System.Data.SqlDbType.DateTime);
SqlParameter quanlity = new SqlParameter("@quanlity", System.Data.SqlDbType.Decimal);
SqlParameter uom = new SqlParameter("@uom", sp[9].ToString());
SqlParameter assetSuperNumber = new SqlParameter("@assetSuperNumber", sp[10].ToString());
SqlParameter costCenter = new SqlParameter("@costCenter", sp[11].ToString());
SqlParameter responsibleCctr = new SqlParameter("@responsibleCctr", sp[12].ToString());
SqlParameter personalNo = new SqlParameter("@personalNo", sp[13].ToString());
SqlParameter employeeName = new SqlParameter("@employeeName", sp[14].ToString());
SqlParameter referenceNo = new SqlParameter("@referenceNo", sp[15].ToString());
SqlParameter documentType = new SqlParameter("@documentType", sp[16].ToString());
SqlParameter amount = new SqlParameter("@amount", System.Data.SqlDbType.Decimal);
SqlParameter kansw = new SqlParameter("@kansw", System.Data.SqlDbType.Decimal);
SqlParameter bchwrtLfd = new SqlParameter("@bchwrtLfd", System.Data.SqlDbType.Decimal);
SqlParameter status = new SqlParameter("@status", sp[20].ToString());
fiscalYear.Value = sp[4].ToString();
DateTime dt;
System.Globalization.CultureInfo cul = new System.Globalization.CultureInfo("en-US");
dt = DateTime.ParseExact(sp[7].ToString(),"yyyyMMdd",cul);
// Format วันเดือนปี
capitalized.Value = dt;
quanlity.Value = sp[8].ToString();
// - คือค่าของตัวเลขที่แสดง ว่าเป็นจำนวนเต็มหรือติดลบ ถ้าเป็นจำนวนติดลบ จะมีเครื่องหมาย - อยู่ด้านหน้าตัวเลข
if (sp[17].Substring(sp[17].Length - 1, 1) == "-")
{
amount.Value = (-1) * decimal.Parse(sp[17].Substring(0, sp[17].Length - 1));
}
else
{
amount.Value = sp[17].ToString();
}
if (sp[18].Substring(sp[18].Length - 1, 1) == "-")
{
kansw.Value = (-1) * decimal.Parse(sp[18].Substring(0, sp[18].Length - 1));
}
else
{
kansw.Value = sp[18].ToString();
}
if (sp[19].Substring(sp[19].Length - 1, 1) == "-")
{
bchwrtLfd.Value = (-1) * decimal.Parse(sp[19].Substring(0, sp[19].Length - 1));
}
else
{
bchwrtLfd.Value = sp[19].ToString();
}
cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add(companyCode);
cmd.Parameters.Add(assetMain);
cmd.Parameters.Add(assetSub);
cmd.Parameters.Add(objid);
cmd.Parameters.Add(fiscalYear);
cmd.Parameters.Add(descr);
cmd.Parameters.Add(assetCLass);
cmd.Parameters.Add(capitalized);
cmd.Parameters.Add(quanlity);
cmd.Parameters.Add(uom);
cmd.Parameters.Add(assetSuperNumber);
cmd.Parameters.Add(costCenter);
cmd.Parameters.Add(responsibleCctr);
cmd.Parameters.Add(personalNo);
cmd.Parameters.Add(employeeName);
cmd.Parameters.Add(referenceNo);
cmd.Parameters.Add(documentType);
cmd.Parameters.Add(amount);
cmd.Parameters.Add(kansw);
cmd.Parameters.Add(bchwrtLfd);
cmd.Parameters.Add(status);
// cmd.Parameters.Add(reason);
cmd.ExecuteNonQuery();
line = sr.ReadLine();
}
sr.Close();
File.Move("C:\\FIAA2_OUTBOUND\\" + myFileInfo.Name, "C:\\FIAA2_OUTBOUND\\completeTransfer\\" + myFileInfo.Name);
cmd = new SqlCommand("exec updateAssetMonitoring", conn);
cmd.ExecuteNonQuery();
}
conn.Close();
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
finally
{
Console.WriteLine("Executing finally block.");
}
Console.ReadLine();
}
}
}
ปล. Code ยาวไปหน่อย ขออภัยทุกท่านด้วยคับ
Date :
2009-12-09 13:19:54
By :
Zimy
หาคนอธิบายไม่ได้เลย แง๊ว ๆ
งานเข้าละค้าบบ !!!
Date :
2009-12-17 08:43:31
By :
Zimy
ผมเข้าใจคร่าว ๆ ว่าตัว SAP จะไปอ่านไฟล์ที่ถูกจัดเก็บแล้วนำมา Insert เข้าในฐานข้อมูล จากนั้น Move ไปที่โฟเดอร์อีกโฟเดอร์หนึ่งครับ
Date :
2009-12-17 08:47:14
By :
webmaster
Load balance : Server 03