Sıra geldi biraz kod yazmaya :)
Eğer Dynamics Ax gibi bir ERP yazılımına sahip değilseniz ya tecrübenizle yada iyi dökümanlarla aktarım yapmanız kolaylaşacaktır.Logo için dökümanı http://www.logotiger2.net/aktarimlar.pdf adresinde mevcut.BU döküman ne işimize yarayacak derseniz..
Bir önceki yazıda Logodan dışarı veri aktarmadan bahsetmiştik.Aktarımdan sonra oluşan xmle benzer xmller ile içeri vri aktarımı yapmak mümkün.Örneği biri sizden toplu virman fişi aktarımı istedi.Sizde örnek xml'i dışarı aktardınız.Buraya kadar problem yok fakat aşağıdaki gibi bir xmlde hangi alanın neye karşılık geldiğini bulmak zor olabilir.
Örnek virman fişi kodu şu şekilde:
<?xml version="1.0" encoding="ISO-8859-9" ?>
- <BANK_VOUCHERS>
- <BANK_VOUCHER DBOP="INS">
<DATE>06.06.2011</DATE>
<NUMBER>001545</NUMBER>
<AUXIL_CODE>KEREM</AUXIL_CODE>
<DEPARMENT>1</DEPARMENT>
<TYPE>2</TYPE>
<TOTAL_DEBIT>35000</TOTAL_DEBIT>
<TOTAL_CREDIT>35000</TOTAL_CREDIT>
<NOTES1>BANKA VİRMAN</NOTES1>
<CREATED_BY>47</CREATED_BY>
<DATE_CREATED>16.06.2011</DATE_CREATED>
<HOUR_CREATED>9</HOUR_CREATED>
<MIN_CREATED>32</MIN_CREATED>
<SEC_CREATED>24</SEC_CREATED>
<CURRSEL_TOTALS>1</CURRSEL_TOTALS>
<DATA_REFERENCE>136466</DATA_REFERENCE>
<RC_TOTAL_DEBIT>22189.82</RC_TOTAL_DEBIT>
<RC_TOTAL_CREDIT>22189.82</RC_TOTAL_CREDIT>
- <TRANSACTIONS>
+ <TRANSACTION>
<TYPE>1</TYPE>
<BANKACC_CODE>xxxxxxxxxxxxxxxx</BANKACC_CODE>
<GL_CODE2>102.100.001.0001</GL_CODE2>
<SOURCEFREF>136466</SOURCEFREF>
<DATE>06.06.2011</DATE>
<TRCODE>2</TRCODE>
<MODULENR>7</MODULENR>
<DESCRIPTION>BANKA VİRMAN</DESCRIPTION>
<DEBIT>20000</DEBIT>
<AMOUNT>20000</AMOUNT>
<TC_XRATE>1</TC_XRATE>
<TC_AMOUNT>20000</TC_AMOUNT>
<RC_XRATE>1.5773</RC_XRATE>
<RC_AMOUNT>12679.9</RC_AMOUNT>
<BANK_PROC_TYPE>1</BANK_PROC_TYPE>
<DUE_DATE>06.06.2011</DUE_DATE>
<DATA_REFERENCE>173071</DATA_REFERENCE>
<AFFECT_RISK>1</AFFECT_RISK>
<ORGLOGOID />
- <PAYMENT_LIST>
- <PAYMENT>
<DATA_REFERENCE>0</DATA_REFERENCE>
<DISCTRDELLIST>0</DISCTRDELLIST>
</PAYMENT>
</PAYMENT_LIST>
</TRANSACTION>
- <TRANSACTION>
<TYPE>1</TYPE>
<BANKACC_CODE>XXXXXXXXXXXXXXX</BANKACC_CODE>
<GL_CODE2>102.100.001.0001</GL_CODE2>
<SOURCEFREF>136466</SOURCEFREF>
<DATE>06.06.2011</DATE>
<TRCODE>2</TRCODE>
Buna benzer bir XML dosyası oluşturmak için ben aşağıdaki gibi bir excel hazırladım ve meşhur butonu ekledim :)
Bu butonun eventinde ise exceldeki verilere istinaden xml dosyamızı oluşturacak makro yazılmıştır.Aslında kodlama oldukça basit.String bir değişkeni xmlenki her bir noda göre manipule ediyoruz.Başlık verileri (header veriler) sabit olduğundan döngüsel bir işlem yapılmıyor.Fakat transactionlar ekranda görülen bilgilerle oluşturuluyor.Ben xml oluştururken aşağıdaki şekilde stringi manipule ediyorum.Kod xmle çok benzediğinden okuması daha kolay oluyor.
VBA Code örneği:
strXMLHEADER = "<?xml version=""1.0"" encoding=""ISO-8859-9"" ?> <BANK_VOUCHERS>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <BANK_VOUCHER DBOP=""INS"" >" & vbCrLf
strXMLHEADER = strXMLHEADER & " <DATE>" & Worksheets("Sheet1").Cells(6, 2).Value & "</DATE>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <NUMBER>~</NUMBER>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <AUXIL_CODE>" & Worksheets("Sheet1").Cells(4, 2).Value & "</AUXIL_CODE>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <DEPARTMENT>" & Worksheets("Sheet1").Cells(7, 2).Value & "</DEPARTMENT>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <TYPE>2</TYPE>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <TOTAL_DEBIT>" & sumTUTAR & "</TOTAL_DEBIT>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <TOTAL_CREDIT>" & sumTUTAR & "</TOTAL_CREDIT>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <NOTES1>" & sDESCRIPTION & "</NOTES1>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <CREATED_BY>" & Worksheets("Sheet1").Cells(5, 2).Value & "</CREATED_BY>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <DATE_CREATED>" & Date & "</DATE_CREATED>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <HOUR_CREATED>" & DatePart("h", Time) & "</HOUR_CREATED>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <MIN_CREATED>" & DatePart("n", Time) & "</MIN_CREATED>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <SEC_CREATED>" & DatePart("s", Time) & "</SEC_CREATED>" & vbCrLf
strXMLHEADER = strXMLHEADER & " <CURRSEL_TOTALS>1</CURRSEL_TOTALS>" & vbCrLf
Sabit değerleri direk yazdım.Parametrik olan ve excel aldığım kodları ise değişken olarak stringe ekledim.
Oluşan XMlide aşağıdaki gibi bir kod yardımıyla xml dosyasına çevirebilirsiniz.
Fonksiyon xml değişkeni dosya olarak saklamamızı sağlıyor.
Private Sub CreateFile(ByVal strFullFileName As String, ByVal strXML As String)
Dim objStream As Object
Set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Position = 0
objStream.Charset = "ISO-8859-9" '"UTF-8"
objStream.WriteText strXMLHEADER
objStream.SaveToFile strFullFileName, 2
End Sub

Hiç yorum yok:
Yorum Gönder