 |
|
|
 |
 |
|
มีอยู่ยุคหนึ่ง Microsoft ได้เอา Crytal Report มารวมเป็นเนื้อเดียวกันกับ .NET 4.0 (Visual Studio 200-2008) ฟรี ฟรี ฟรี
ผมเคยใช้ Crystal Report ได้โดยไร้อุปสรรคใดใดใด สร้างรายงานที่ซับซ้อนมากฯฯฯฯ ผมยังจำได้ไม่เคยลืม
กระดาษรันทด (Size A4 แต่มีขนาดเล็กกว่า มีขอบดำล้อมรอบทั้งสี่ด้าน ถ้าเป็นคนที่รู้จักสังเกตุ จะรับรู้ได้ด้วยตาเปล่า)
ผมคำนวณยอดยกมา (B/F Brought forward) และยอดยกไป (C/F Carry forward)
ข้ามระหว่างหน้า (ยอดสรุปหน้าที่ 1 บรรทัดสุดท้าย จะไปเป็นยอดสรุปรายการแรกในหน้าที่สอง...)
และในหน้าสุดท้าย จะปรากฏ ยอดสรุป สองยอด (เต็มหน้า/ไม่เต็มหน้า คำนวณอีก...)
ประเด็นสำคัญ ทุกฯอย่างต้องดูดีแบบไม่ปรกติ ผ่านการทดสอบอย่างเข้มข้น สุดสุดทุกฯกรณี (ใช้คนหลายคนช่วยทดสอบ)
--- ผิดพลาดไม่ได้เลย
รายงานตัวนี้ ณ.วันนี้ จ้างผมสามหมื่นบาทผมก็ไม่เอาครับ
หลังจากนั้น >.NET 4.0 ผมก็ได้ข่าวว่า Crystal Reports มันไม่ฟรีแล้วว่ะเฮ้ย ผมก็เลยถอยออกมา
ผมรู้สึกว่า Microsoft ทำอะไรไม่สุด (ขี้ไม่อิ่ม) เช่น
--- Silver Light หายเงียบไปเลย
--- Crystal Reports ใช้ได้แต่ต้องลงเพิ่มเอง/หาเอาเอง (ปัญหาตามมาอย่างที่เห็น)
--- Blazer มาอีกแล้ว แต่ผมชอบ แต่ก็แอบกลัวเหมือน 2 ข้อแรก (ขี้ไม่อิ่ม)
เล่ามายาว ในความคิดของผมสรุปว่า ควรจะกลับไปใช้ .NET 4.0 With VB.NET แค่นี้ก็เหลือเฟือ ไม่จำเป็นต้องใช้ .NET > 4.0
ก็สร้างสรรค์งานสมบูรณ์แบบได้แล้ว >= .NET 4.0 VB.NET ผมดูแล้วแทบจะไม่มีอะไรเพิ่มเข้ามาเลย
ณ.ที่นี้มีหลายคนนะ ที่ช่วยคุณได้ ขอให้โชคดีครับ
ผมเป็นคนคิดเยอะ และพิมพ์ไม่ทัน รายละเอียดลึกซึ้งมันก็ปรากฏแค่ผิวเผิน
|
 |
 |
 |
 |
Date :
2019-07-25 05:36:27 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
บ่นเล่าให้ฟัง จาก #NO1 ผมมีได้สองประสบการณ์ที่ไม่น่าจดจำ แต่ผมก็ลืมไม่ได้
8 โมงเช้ายันสว่าง เป็นอยู่อย่างนี้หลายเดือน ตายไปผมก็ลืมไม่ลงความขมขื่นของทั้ง 2 ประสบการณ์นี้
(สองโปรเจคนี้ประมาณ 600 หน้าจออินพุต ผมคนเขียนคนเดียวเลยนะ)
ยังไม่พอนะ เอกสารหลายร้อยหน้าผมก็ต้องทำอีก ทำรูปเล่มอย่างสวยงาม แต่ผู้จัดทำไม่ใช่ชื่อของผม
--- ผ่านมาหลายปี มีอยู่วันหนึ่งผมมีโอกาสได้ไปเยือน คู่มือหลายเล่มถูกเก็บเป็นอย่างดี และดูใหม่เหมือนเดิม
(หมายความว่า ไม่มีใครเปิดอ่านมันเลยแม้แต่หน้าเดียว)
ผมแนะนำเฉยฯนะ ถูกผิดผมไม่รู้ ลองเล่น RDLC/Fast Report เป็นทางเลือก บางทีคุณอาจจะเจอสิ่งที่ใช่
สำหรับคุณก็อาจเป็นไปได้
...
...
...
จบแล้ว
ปล. ถ้าผมเลือกได้ ถ้าผมย้อนอดีตได้ ผมคงไม่มาเดินบนเส้นทางนี้ (โหดร้าย/สกปรก/etc...)
|
 |
 |
 |
 |
Date :
2019-07-25 05:52:54 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แถมให้อีกนิดหนึ่ง ถ้าใช้ RDLC มันตีเส้นคู่ไม่ได้
หมายความว่า ตอน Preview มันไม่แสดง แต่ตอนพิมพ์ลงบนกระดาษมันทำได้ ผมนี่งงตึ๊บกับ MS เลย
ถ้างานอ่อนไหว ทางบัญชีเขาไม่ยอมหรอก ผมก็เลยต้องหันไปใช้ Fast Report (แต่ก็ไม่รู้จะเจออะไรอีกเหมือนกัน)
เพราะตั้งแต่เกิดมายังไม่ได้ลอง แต่อยากลองสักครั้งหนึ่ง บนเวปนะ บนวินเด็กฯไม่อยู่ในสายตา
|
 |
 |
 |
 |
Date :
2019-07-25 05:59:27 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมพึ่งนึกออก ว่าตอนนั้นผมก็มีปัญหาเช่นเดียวกับคุณ (เหมือนกันเลย)
วิธีที่ผมใช้คือ ไปดาวโหลดตัวที่ใช้ได้กับโปรแกรมของเรา มันมีหลายตัวให้เลือก แต่จะมี 1 ตัวที่ใช้ได้ และต้องได้อย่างแน่นอน
คุณไม่จำเป็นต้องปรับลงมาที่ .NET 4.0 เสียเวลาทดสอบนิดหน่อย ถือว่าเป็นการลองผิดลองถูกเป็นเรื่องปรกติ
มันจะมีอยู่ 1 ตัวที่ใช้ได้ ตัวไหนใช้ไม่ได้ Remove ออกและ Restart เครื่องใหม่ด้วยทุกครั้ง
บางทีสมองของผมมันไม่คิดไม่ทัน (มีเรื่องให้คิดร้อยแปดพันเก้า ดีกับร้ายมีพอฯกัน)
ได้แน่นอนครับ เพราะผมก็ทำแบบนี้แหละ (ผ่านมานาน 2-3 ปีแล้วมั้ง)
|
 |
 |
 |
 |
Date :
2019-07-25 09:31:47 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณบอกว่าคุณใช้ VB 2017 ผมงงเหมือนกันว่ามันคือเวอร์ชั่นอะไร
Microsoft มันนิยาม เวอร์ชั่นให้สับสน
|
 |
 |
 |
 |
Date :
2019-07-25 09:35:28 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอาเท่าที่จำได้ ถ้าจำไม่ผิดรู้สึกว่า ตัว Client จะต้องอัพเดทด้วย (Windows Update) อันนี้ผมไม่แน่ใจ จำได้คลับคล้ายคลับคลา
ทุกวันนี้ผมก็ยังใช้ VB.NET อยู่แต่เฉพาะส่วนที่สำคัญฯฯฯ ด้วยเหตุผลหลายประการ อันนี้เป็น Rest Full Service (HTTP Web API)
Code (VB.NET)
Namespace SR_APIService02.Controllers.Sura
'<ApiController>
<Route("api/[controller]")>
Partial Public Class SuraController : Inherits ControllerBase
''' <summary>
''' Usage: https://localhost:6969/api/Sura/GetAllWarehouse
''' </summary>
''' <returns>List of (Id, Text, Remark[warehouseCN/provinceN]) From id_wherehouse/id_province (ตาราง โรงกลั่นน้ำมัน+จังหวัด)</returns>
<Route("GetAllWarehouse")>
<HttpGet>
Public Function GetAllWarehouse() As IActionResult
Dim strSQL =
<Suparuck>
Select a.wh_code, a.thai_name, b.province_name, a.ass_1 From id_warehouse a
Left Join id_province b on a.province_code = b.province_code
order by a.wh_code asc
</Suparuck>
Dim results As IList(Of Object) 'IEnumerable(Of Object) '***** สำหรับ Dapper IList(Of Object) <> IList(Of Object)()
Dim fakeList = {New With {.Id = "", .Text = "", .Remark = "", .Remark2 = ""}}.Take(0).ToList()
'SexyDatabase.ConfigDatabase(SimpleCRUD.Dialect.MySQL)
Using cn = SexyDatabase.SexyConnection()
results = cn.Query(Of Object)(strSQL.Value)
End Using
For Each r In results
Dim fields = DirectCast(r, IDictionary(Of String, Object)) 'row.Cast<IDictionary<string, object>>()
'Dim ass0 = fields("ass_1").GetType()
Dim f1 = If(Convert.IsDBNull(fields("wh_code")), "", fields("wh_code").ToString())
Dim f2 = If(Convert.IsDBNull(fields("thai_name")), "", fields("thai_name").ToString())
Dim f3 = If(Convert.IsDBNull(fields("province_name")), "", fields("province_name").ToString())
fakeList.Add(New With {.Id = f1, .Text = f2, .Remark = f1 + f2 + f3, .remark2 = f3})
Next
Return Ok(fakeList.ToList()) 'มันแปลง Property เป็นอักษรตัวเล็กทั้งหมด เช่น id, text, remark, remark2 แจ๋วว่ะเฮ้ย
End Function
End Namepace
|
 |
 |
 |
 |
Date :
2019-07-25 09:43:33 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลง run time ให้ตรงกับ version ที่ Deploy krub
|
 |
 |
 |
 |
Date :
2019-07-25 10:02:01 |
By :
adminliver |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สำหรับคนที่ยังไม่รู้ ให้มอง ชื่อ
VisualStudio 2017 C# เป็น 1 ภาษา
และ VisualStudio 2015 C# เป็น อีก 1 ภาษา
และ VisualStudio 2012 C# เป็น อีก 1 ภาษา
ซึ่งจะมีความแตกต่างกันน้อยมาก แต่ก็มี
ซึ่งส่วนใหญ่จะเป็นรูปแบบ ไวยกรณ์ การเรียกใช้ function method class variable ต่างๆ
ชุด component มาตรฐาน ที่มีไว้ให้
ซึ่งส่วนใหญ่ ตัวที่ใหม่กว่า ก็จะมีของเก่าครบหมดแค่เพิ่ม ของใหม่เข้าไป
แต่บางทีอาจจะมี บางตัวที่ถูกลบออกไป
ส่วน net 2 3 4 5 ..... เป็นชุด library object function method ที่สามารถเรียกใช้ได้จากหลากหลาย ภาษา
ไม่ขึ้นอยู่กับภาษาใดภาษาหนึ่งแค่ รู้ว่าจะเรียกมาใช้ยังไงในแต่ละ ภาษาเท่านั้น
ภาษา pascal python php java ฯลฯ ก็ยังเรียกใช้ .net ได้ ถ้ารู้วิธีเขียน
|
 |
 |
 |
 |
Date :
2019-07-25 10:44:43 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอถามหน่อยครับ มีวิธีที่ดีกว่านี้ไหม ตรง //สั้นดี *****
Generic Type
Code (C#)
public static string assDivision(JObject args)
{
//ยาวเกินไป
var x1Value = args.GetValue("key1", StringComparison.OrdinalIgnoreCase).Value<string>();
var x2Value = args.GetValue("key2", StringComparison.OrdinalIgnoreCase).Value<int>();
var x3Value = args.GetValue("key3", StringComparison.OrdinalIgnoreCase).Value<DateTime>();
//ยาวเกินไป
//สั้นดี *****
var x4Value = assValue<string>(args, "key4");
var x5Value = assValue<DateTime>(args, "key5");
var x6Value = assValue<int>(args, "key6");
//สั้นดี *****
return string.Empty;
}
private static T assValue<T>(JObject args, string key)
{
return (T)Convert.ChangeType(args.GetValue(key, StringComparison.OrdinalIgnoreCase).Value<T>(), typeof(T));
}
|
 |
 |
 |
 |
Date :
2019-07-26 09:52:28 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|