 |
|
[.NET]
จะทำโปรเจคของ Visual Studio อ่ะค่ะ รบกวนท่านที่มีความรู้หน่อยนะค่ะ |
|
 |
|
|
 |
 |
|
บน .NET ใช้ Charts Control ได้เลยครับ ง่ายสุด ๆ
|
 |
 |
 |
 |
Date :
2015-08-02 10:43:10 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ   
ใช่ VB.NET Read Text File ได้แล้ว แต่เอามาเก็บใน Array ไม่ได้อ่ะคะ  

ใครพอมีความรู้ VB.NET เรื่อง Array 2D บ้างคะ และก็อีกเรื่องที่สงสัย VB.NET สามารถนำ Array ไปทำเป็นกราฟได้รึเปล่าคะ
รอกวนด้วยค่ะ...
|
 |
 |
 |
 |
Date :
2015-08-05 11:40:34 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองใช้พวก List หรือ DataTable แทนล่ะครับ ลองดูตัวอย่าง List ครับ
List (VB.NET)
001. Imports System.Collections.Generic
002.
003.
004. Public Class Part
005. Implements IEquatable(Of Part)
006. Public Property PartName() As String
007. Get
008. Return m_PartName
009. End Get
010. Set (value As String )
011. m_PartName = Value
012. End Set
013. End Property
014. Private m_PartName As String
015.
016. Public Property PartId() As Integer
017. Get
018. Return m_PartId
019. End Get
020. Set (value As Integer )
021. m_PartId = Value
022. End Set
023. End Property
024. Private m_PartId As Integer
025.
026. Public Overrides Function ToString() As String
027. Return "ID: " & PartId & " Name: " & PartName
028. End Function
029. Public Overrides Function Equals(obj As Object ) As Boolean
030. If obj Is Nothing Then
031. Return False
032. End If
033. Dim objAsPart As Part = TryCast(obj, Part)
034. If objAsPart Is Nothing Then
035. Return False
036. Else
037. Return Equals(objAsPart)
038. End If
039. End Function
040. Public Overrides Function GetHashCode() As Integer
041. Return PartId
042. End Function
043. Public Overloads Function Equals(other As Part) As Boolean _
044. Implements IEquatable(Of Part).Equals
045. If other Is Nothing Then
046. Return False
047. End If
048. Return ( Me .PartId.Equals(other.PartId))
049. End Function
050.
051.
052. End Class
053. Public Class Example
054. Public Shared Sub Main()
055.
056. Dim parts As New List(Of Part)()
057.
058.
059. parts.Add( New Part() With { _
060. .PartName = "crank arm" , _
061. .PartId = 1234 _
062. })
063. parts.Add( New Part() With { _
064. .PartName = "chain ring" , _
065. .PartId = 1334 _
066. })
067. parts.Add( New Part() With { _
068. .PartName = "regular seat" , _
069. .PartId = 1434 _
070. })
071. parts.Add( New Part() With { _
072. .PartName = "banana seat" , _
073. .PartId = 1444 _
074. })
075. parts.Add( New Part() With { _
076. .PartName = "cassette" , _
077. .PartId = 1534 _
078. })
079. parts.Add( New Part() With { _
080. .PartName = "shift lever" , _
081. .PartId = 1634 _
082. })
083.
084.
085.
086.
087.
088. Console.WriteLine()
089. For Each aPart As Part In parts
090. Console.WriteLine(aPart)
091. Next
092.
093.
094.
095.
096. Console.WriteLine(vbLf & "Contains(" "1734" "): {0}" , parts.Contains( New Part() With { _
097. .PartId = 1734, _
098. .PartName = "" _
099. }))
100.
101.
102. Console.WriteLine(vbLf & "Insert(2, " "1834" ")" )
103. parts.Insert(2, New Part() With { _
104. .PartName = "brake lever" , _
105. .PartId = 1834 _
106. })
107.
108.
109.
110. For Each aPart As Part In parts
111. Console.WriteLine(aPart)
112. Next
113.
114. Console.WriteLine(vbLf & "Parts[3]: {0}" , parts(3))
115.
116. Console.WriteLine(vbLf & "Remove(" "1534" ")" )
117.
118.
119.
120. parts.Remove( New Part() With { _
121. .PartId = 1534, _
122. .PartName = "cogs" _
123. })
124.
125. Console.WriteLine()
126. For Each aPart As Part In parts
127. Console.WriteLine(aPart)
128. Next
129.
130. Console.WriteLine(vbLf & "RemoveAt(3)" )
131.
132. parts.RemoveAt(3)
133.
134. Console.WriteLine()
135. For Each aPart As Part In parts
136. Console.WriteLine(aPart)
137. Next
138. End Sub
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179. End Class
|
 |
 |
 |
 |
Date :
2015-08-05 11:50:14 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลืมดูว่า C# นี่ง่ายเลยครับ
Code (C#)
1. public class FileDetail
2. {
3. public string ID { get ; set ; }
4. public string VALUE { get ; set ; }
5. }
Code (C#)
1. var list = new List<FileDetail>();
2.
3. for ( int i = 1; i <= 10; i++)
4. {
5. list.Add( new FileDetail { ID = i.ToString(),VALUE = "XYZ" ; });
6. }
Code (C#)
1.
2. foreach (FileDetail item in list)
3. {
4.
5.
6. }
|
 |
 |
 |
 |
Date :
2015-08-05 11:54:06 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หาๆ เปลี่ยนเป็น c# หรอคะ VB.NET นี่ก็ งง แล้ว T_T
|
 |
 |
 |
 |
Date :
2015-08-05 12:45:32 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
01. Public Class FileDetail
02. Public Property ID() As String
03. Get
04. Return m_ID
05. End Get
06. Set
07. m_ID = Value
08. End Set
09. End Property
10. Private m_ID As String
11. Public Property VALUE() As String
12. Get
13. Return m_VALUE
14. End Get
15. Set
16. m_VALUE = Value
17. End Set
18. End Property
19. Private m_VALUE As String
20. End Class
Code (VB.NET)
1. For i As Integer = 1 To 10
2. list.Add( New Part() With { _
3. .ID = i.ToString(), _
4. .VALUE = "XYZ" _
5. })
6. Next
Code (VB.NET)
1. For Each item As FileDetail In list
2. item.ID
3. item.VALUE
4. Next
|
 |
 |
 |
 |
Date :
2015-08-05 13:11:27 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ค่ะ มันจะพอทำได้จริงรึเปล่า ที่จะ อ่านไฟล์ text มาเก็บใน array แล้วนำ array มาทำเป็นกราฟ และจะใช้ภาษาอะไรที่ง่ายต่อการเขียนคะ C#, VB.NET
|
 |
 |
 |
 |
Date :
2015-08-06 10:05:55 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้องดูก่อนว่ากราฟมันรับค่าแบบไหน 
|
 |
 |
 |
 |
Date :
2015-08-06 10:20:23 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองทำให้ดูครับ ถูกผิดอย่าว่ากันนะครับผม ท่านอื่นเสริมได้นะครับ
และขอโทษด้วยนะครับที่เป็น C# เนื่องจากไม่ได้เขียน VB.NET นาน สนิมขึ้นแล้วครับผม
ผมลองมั่วๆข้อมูลขึ้นมาเองตามที่เห็นนะครับ
BANPUE
Load Report -22kv Outgoing No.3
Daily
Date Time;KV(AB);kV(BC);kV(CA);IA;IB;IC
24/06/15 00:30:00;22.38;22.32;22.25;167;165;174
24/06/15 01:30:00;22.37;22.45;22.22;166;162;171
24/06/15 02:30:00;22.28;22.50;22.21;161;164;173
24/06/15 03:30:00;22.18;22.56;22.24;162;162;172
24/06/15 04:30:00;22.08;22.53;22.26;165;168;171
24/06/15 05:30:00;22.34;22.51;22.20;168;163;175
24/06/15 06:30:00;22.35;22.54;22.22;162;163;176
24/06/15 07:40:00;22.33;22.58;22.21;169;164;172
ถ้าทำได้แล้วเรื่องกราฟก็ไม่มีปัญหาครับผม
Code (C#)
01. using System;
02. using System.Collections.Generic;
03. using System.IO;
04. using System.Linq;
05. using System.Text;
06. using System.Threading.Tasks;
07.
08. namespace ConsoleApplication2
09. {
10. class Program
11. {
12. static void Main( string [] args)
13. {
14.
15. string [] lines = System.IO.File.ReadAllLines(@ "D:\logTest.txt" );
16.
17. System.Console.WriteLine( "Contents of WriteLines2.txt = " );
18. int lineNum = 0;
19. logmaster logM = new logmaster();
20. logM._logdetail = new List<logdetail>();
21. foreach ( string line in lines)
22. {
23. lineNum++;
24. if (lineNum == 1)
25. {
26. logM.title_a = line;
27.
28. Console.WriteLine( "\t" + logM.title_a);
29. }
30. if (lineNum == 2)
31. {
32. logM.title_b = line;
33. Console.WriteLine( "\t" + logM.title_b);
34. }
35. if (lineNum == 3)
36. {
37. logM.title_c = line;
38. Console.WriteLine( "\t" + logM.title_c);
39. }
40. if (lineNum > 4)
41. {
42. string str;
43. string [] strArray;
44. str = line;
45.
46. strArray = str.Split( ';' );
47. logdetail currentLog = new logdetail();
48. currentLog.Date_Time = strArray[0];
49. currentLog.KV_AB = strArray[1];
50. currentLog.kV_BC = strArray[2];
51. currentLog.kV_CA = strArray[3];
52. logM._logdetail.Add(currentLog);
53. }
54.
55.
56. }
57. Console.WriteLine( "\n" );
58. foreach (var l in logM._logdetail)
59. {
60. Console.WriteLine( "\tDate Time = {0};KV_AB={1};kV_BC={2}" , l.Date_Time,l.KV_AB,l.kV_BC);
61. }
62.
63. Console.WriteLine( "Press any key to exit." );
64. System.Console.ReadKey();
65. }
66. }
67. public class logmaster
68. {
69. public string title_a { get ; set ; }
70. public string title_b { get ; set ; }
71. public string title_c { get ; set ; }
72. public List<logdetail> _logdetail { get ; set ; }
73. }
74. public class logdetail
75. {
76.
77. public string Date_Time { get ; set ; }
78. public string KV_AB { get ; set ; }
79. public string kV_BC { get ; set ; }
80. public string kV_CA { get ; set ; }
81. public string IA { get ; set ; }
82. public string IB { get ; set ; }
83. public string IC { get ; set ; }
84. }
85. }
|
 |
 |
 |
 |
Date :
2015-08-06 11:28:19 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อคืออยากจะใช้ Report Application โชว์กราฟนะ แต่ งง ตรงที่รับค่าของกราฟ เพราะว่าค่าที่จะโชว์ข้อมูลของกราฟจะมาจากไฟล์ text แต่ในโปรแกรมให้ข้อมูลตามรูปอะคะ เลยไม่รู้จะทำไง

|
 |
 |
 |
 |
Date :
2015-08-06 11:38:40 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โทษนะค่ะ คุณGuest ลองเอาไปวางแล้วมี Error อ่ะ

|
 |
 |
 |
 |
Date :
2015-08-06 14:46:59 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอโทษครับ แนะนำไปไม่หมด
คือ report ก่อนจะออกแบบมันจำเป็นจะต้องมี Data Set หรือ Object หรือไม่ก็มีฐานข้อมูลว่างั้น
แต่ที่นี้เราไม่มี เราจึงจำเป็นจะต้องสร้างเพื่อให้มันเอามาใช้ออกแบบ ลากๆวางๆ (มันมีแบบขั้นเทพอยู่ คือพวกนี้เขียนสด ไม่แนะนำ)
ผมก็เลยสร้าง class มาให้ดูครับว่าจะเอาข้อมูลจาก Text มาเก็บได้อย่างไรและจะใช้ต่ออย่างไง
จึงทำตัวอย่างให้ดูเลย ตามนี้นะครับ
ถ้าต้องการ code ทั้งหมดเลย ก็โหลดตามนี้นะครับ
https://onedrive.live.com/redir?resid=5428FFE448EF4FF3!522&authkey=!ADyNDUH6KUwhX9M&ithint=file%2c7z
Code (C#)
01. using System;
02. using System.Collections.Generic;
03. using System.Linq;
04. using System.Text;
05. using System.Threading.Tasks;
06.
07. namespace WindowsFormsApplication2
08. {
09. public class logmaster
10. {
11. public string title_a { get ; set ; }
12. public string title_b { get ; set ; }
13. public string title_c { get ; set ; }
14. public List<logdetail> _logdetail { get ; set ; }
15. public logmaster()
16. {
17.
18. }
19. public static logmaster getLogmaster()
20. {
21. string [] lines = System.IO.File.ReadAllLines(@ "D:\logTest.txt" );
22. int lineNum = 0;
23. logmaster logM = new logmaster();
24. logM._logdetail = new List<logdetail>();
25. foreach ( string line in lines)
26. {
27. lineNum++;
28. if (lineNum == 1)
29. {
30. logM.title_a = line;
31. Console.WriteLine( "\t" + logM.title_a);
32. }
33. if (lineNum == 2)
34. {
35. logM.title_b = line;
36. Console.WriteLine( "\t" + logM.title_b);
37. }
38. if (lineNum == 3)
39. {
40. logM.title_c = line;
41. Console.WriteLine( "\t" + logM.title_c);
42. }
43. if (lineNum > 4)
44. {
45. string str;
46. string [] strArray;
47. str = line;
48.
49. strArray = str.Split( ';' );
50. logdetail currentLog = new logdetail();
51. currentLog.Date_Time = strArray[0];
52. currentLog.KV_AB = double .Parse(strArray[1]);
53. currentLog.kV_BC = double .Parse(strArray[2]);
54. currentLog.kV_CA = double .Parse(strArray[3]);
55. currentLog.IA = double .Parse(strArray[4]);
56. currentLog.IB = double .Parse(strArray[5]);
57. currentLog.IC = double .Parse(strArray[6]);
58. logM._logdetail.Add(currentLog);
59. }
60. }
61. return logM;
62. }
63. }
64. public class logdetail
65. {
66.
67. public string Date_Time { get ; set ; }
68. public double KV_AB { get ; set ; }
69. public double kV_BC { get ; set ; }
70. public double kV_CA { get ; set ; }
71. public double IA { get ; set ; }
72. public double IB { get ; set ; }
73. public double IC { get ; set ; }
74. }
75. }
Code (C#)
01. using System;
02. using System.Collections.Generic;
03. using System.ComponentModel;
04. using System.Data;
05. using System.Drawing;
06. using System.Linq;
07. using System.Text;
08. using System.Threading.Tasks;
09. using System.Windows.Forms;
10.
11. namespace WindowsFormsApplication2
12. {
13. public partial class Form1 : Form
14. {
15. public Form1()
16. {
17. InitializeComponent();
18. }
19.
20. private void Form1_Load( object sender, EventArgs e)
21. {
22. this .logmasterBindingSource.DataSource = logmaster.getLogmaster();
23. this .reportViewer1.RefreshReport();
24. }
25. }
26. }




|
 |
 |
 |
 |
Date :
2015-08-06 14:54:43 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อๆ ขอบคุณมากเลยนะค่ะ ที่ช่วยแนะนำและทำให้ดูนะค่ะ    
|
 |
 |
 |
 |
Date :
2015-08-06 15:48:52 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
code โหลดไม่ได้อ่ะ
|
 |
 |
 |
 |
Date :
2015-08-06 15:54:09 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โหลดได้แล้วนะคะ ขอบคุณมากๆค่ะ
|
 |
 |
 |
 |
Date :
2015-08-07 09:44:46 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ Guest คะ อธิบายให้หน่อย ค่ะ
แก้ไปแก้มา เข้าไม่ได้เลย Error The Logarithm Base must be equal or greater than 2.0 Parameter name: value
ไม่เข้าใจ ตรง title_a, title_b, title_c ที่อยู่ในเงื่อนไข if (lineNum == 1,2,3,) และก็ if (lineNum > 4) อ่ะ ไม่รู้ทำไมไปโชว์ในกราฟแค่ 4 ค่า ไม่มาเหมือนในตารางเลย
และก็จะทำหน้า Report ให้มี 2 หัวข้อยังไงอ่ะ หน้า Graph Curve กับ หน้า Databaes Table ละหน้ากราฟ มี 5 กราฟ A4แนวนอน อ่ะคะ แต่หน้าตาราง แนวตั้ง อันเดียว รบกวนหน่อยนะค่ะ

|
 |
 |
 |
 |
Date :
2015-11-17 13:56:09 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ฮาฮาฮา ผมก็นึกว่าผ่านไปด้วยดีแล้ว พอเปิดมาดูเราตอบนี้หว่า เอางั้นต่ออีกหน่อย
ที่ if lineNum 123 และ 4 นั้น มันไม่มีอะไรหรอกครับ แค่จะทำให้เห็นว่าเรากำลังอ่าน
แถวที่เท่าไร ทีแรกว่าจะข้ามไปอ่านแถวที่ 5 เลยก็ได้(แถวใน Text file)
เช่น
lineNum[1] = BANPUE
lineNum[2] = Load Report -22kv Outgoing No.3
lineNum[3] = Load Report -22kv Outgoing No.3
lineNum[4] = Date Time;KV(AB);kV(BC);kV(CA);IA;IB;IC
lineNum[] > 4 ก็คือแถวที่ 5...
Text file ผมทำตัวอย่างตามที่เห็นครับ
BANPUE
Load Report -22kv Outgoing No.3
Daily
Date Time;KV(AB);kV(BC);kV(CA);IA;IB;IC
24/06/15 00:30:00;22.38;22.32;22.25;167;165;174
24/06/15 01:30:00;22.37;22.45;22.22;166;162;171
24/06/15 02:30:00;22.28;22.50;22.21;161;164;173
24/06/15 03:30:00;22.18;22.56;22.24;162;162;172
24/06/15 04:30:00;22.08;22.53;22.26;165;168;171
24/06/15 05:30:00;22.34;22.51;22.20;168;163;175
24/06/15 06:30:00;22.35;22.54;22.22;162;163;176
24/06/15 07:40:00;22.33;22.58;22.21;169;164;172
ส่วนที่ว่าอ่านแล้วไม่ได้นี้ไม่รู้เป็นเพราะอะไร เพราะไปลบ 4 แถวทิ้งหรือเพิ่มอันนี้ก็มีส่วนครับ ถ้าอย่างไงลองตัดส่วน Text file บางส่วน
เอามาให้ดูก็ได้ครับ ส่วนเรื่องการออกแบบ Report (ไม่ได้ออกตัวนะ ผมก็ศึกษามาได้ไม่มากหนักเกี่ยวกับการใช้ Report Viewer ครับผม)
เพราะส่วนมากจะใช้แต่ Crystal report หรือไม่ลองหาหนังสือเกี่ยวกับ Report Viewer มาอ่านดูครับ หรือทำตามท่าน Admin ที่สอน
อยู่ในเว็บบอร์ดนี้ก็ได้ครับ ผมก็มาศึกษาอยู่เป็นประจำ
https://www.thaicreate.com/dotnet/reportviewer-parameter.html
และก็ผมชื่อ บัญดิษฐ ครับผม
|
 |
 |
 |
 |
Date :
2015-11-17 16:03:36 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หวัดดีค่ะ พี่ บัญดิษฐ ตอนนี่ทำหาย Error แล้ว
แต่ก็ติดเหมือนเดิมค่ะ งานนี้อีกนานเลย

+++++++++++++++++++++++++++++++++++

|
 |
 |
 |
 |
Date :
2015-11-17 16:46:20 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองดูตาม Code นี้นะครับ
Code (C#)
01. using System;
02. using System.Collections.Generic;
03. using System.Linq;
04. using System.Text;
05. using System.Threading.Tasks;
06.
07. namespace WindowsFormsApplication2
08. {
09. public class logmaster
10. {
11. public string title_a { get ; set ; }
12. public string title_b { get ; set ; }
13. public string title_c { get ; set ; }
14. public List<logdetail> _logdetail { get ; set ; }
15. public logmaster()
16. {
17.
18. }
19. public static logmaster getLogmaster()
20. {
21. string [] lines = System.IO.File.ReadAllLines(@ "D:\logTest.txt" );
22. int lineNum = 0;
23. logmaster logM = new logmaster();
24. logM._logdetail = new List<logdetail>();
25. foreach ( string line in lines)
26. {
27. lineNum++;
28. if (lineNum == 1)
29. {
30. logM.title_a = line;
31. Console.WriteLine( "\t" + logM.title_a);
32. }
33. if (lineNum == 2)
34. {
35. logM.title_b = line;
36. Console.WriteLine( "\t" + logM.title_b);
37. }
38. if (lineNum == 3)
39. {
40. logM.title_c = line;
41. Console.WriteLine( "\t" + logM.title_c);
42. }
43. if (lineNum > 4)
44. {
45. string str;
46. string [] strArray;
47. str = line;
48.
49. strArray = str.Split( ';' );
50. logdetail currentLog = new logdetail();
51. currentLog.Date_Time = strArray[0];
52. currentLog.KV_AB = double .Parse(strArray[1]);
53. currentLog.kV_BC = double .Parse(strArray[2]);
54. currentLog.kV_CA = double .Parse(strArray[3]);
55. currentLog.IA = double .Parse(strArray[4]);
56. currentLog.IB = double .Parse(strArray[5]);
57. currentLog.IC = strArray[6].IsNumeric();
58. logM._logdetail.Add(currentLog);
59. }
60. }
61. return logM;
62. }
63. }
64. public class logdetail
65. {
66.
67. public string Date_Time { get ; set ; }
68. public double KV_AB { get ; set ; }
69. public double kV_BC { get ; set ; }
70. public double kV_CA { get ; set ; }
71. public double IA { get ; set ; }
72. public double IB { get ; set ; }
73. public double IC { get ; set ; }
74. }
75.
76. public static class Extensions
77. {
78. public static double IsNumeric( this string s)
79. {
80. foreach ( char c in s)
81. {
82. if (! char .IsDigit(c) && c != '.' )
83. {
84. return 0;
85. }
86. }
87. double result = double .Parse(s);
88. return result;
89. }
90. }
91. }
|
 |
 |
 |
 |
Date :
2015-11-17 17:05:55 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลืมบอกว่าสามารถใช้ได้กับทุกตัวนะครับ อันนั้นแค่ตัวอย่าง
BANPUE
Load Report -22kv Outgoing No.3
Daily
Date Time;KV(AB);kV(BC);kV(CA);IA;IB;IC
24/06/15 00:30:00;22.38;22.32;22.25;167;165;174
24/06/15 01:30:00;22.37;22.45;22.22;--;162;171
24/06/15 02:30:00;22.28;22.50;--;161;164;173
24/06/15 03:30:00;22.18;22.56;22.24;162;162;172
24/06/15 04:30:00;22.08;--;22.26;165;168;171
24/06/15 05:30:00;22.34;22.51;22.20;168;163;--
24/06/15 06:30:00;22.35;22.54;22.22;162;163;--
24/06/15 07:40:00;22.33;22.58;--;169;164;172
currentLog.Date_Time = strArray[0];//KV(AB)//Date Time
currentLog.KV_AB = strArray[1].IsNumeric();//KV(AB)
currentLog.kV_BC = strArray[2].IsNumeric();//kV(BC)
currentLog.kV_CA =strArray[3].IsNumeric();//kV(CA)
currentLog.IA = strArray[4].IsNumeric();//IA
currentLog.IB = strArray[5].IsNumeric();//IB
currentLog.IC = strArray[6].IsNumeric();//เขียน Extensions เพิ่มขึ้นมาว่าตรวจว่าเป็นตัวเลขหรือไหม IC
|
 |
 |
 |
 |
Date :
2015-11-17 17:11:53 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2015-11-17 21:39:21 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่บัญดิษฐ แล้วถ้า IC ไม่มีละ
BANPUE
Load Report -22kv Outgoing No.3
Daily
Date Time;KV(AB);kV(BC);kV(CA);IA;IB
24/06/15 00:30:00;22.38;22.32;22.25;167;165
24/06/15 01:30:00;22.37;22.45;22.22;--;162
24/06/15 02:30:00;22.28;22.50;--;161;164
24/06/15 03:30:00;22.18;22.56;22.24;162;162
24/06/15 04:30:00;22.08;--;22.26;165;168
24/06/15 05:30:00;22.34;22.51;22.20;168;163
24/06/15 06:30:00;22.35;22.54;22.22;162;163
24/06/15 07:40:00;22.33;22.58;--;169;164
จะเขียนเงื่อนไขยังไง เพราะ CODE จะ Error จะป้องกันยังไงค่ะ
|
 |
 |
 |
 |
Date :
2015-11-17 21:50:14 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่บัญดิษฐค่ะ
BANPUE
Load Report -22kv Outgoing No.3
Daily
Date Time;KV(AB);kV(BC);kV(CA);IA;IB
24/06/15 00:30:00;22.38;22.32;22.25;167;165
24/06/15 01:30:00;22.37;22.45;22.22;--;162
...
.
ถ้าเอา Date Time;KV(AB);kV(BC);kV(CA);IA;IB
เช็คได้ไหมค่ะ ขับว่า if (lineNum == 4) ว่ามีArrayกี่ตัว แล้วไปกำหนดที่ if (lineNum > 4) ว่าที่กี่Arrayได้หรือเปล่าค่ะ
if (lineNum == 4)
{
string name;
string[] nameArray;
name = line;
nameArray = name.Split(';');
for (int i = 0; i < nameArray.Length; i++)
{
Console.WriteLine("Array Index[{0}] = {1}", i, nameArray[i]);
}
Console.WriteLine("Array Length : {0}", nameArray.Length.ToString());
Console.ReadLine();
}
|
 |
 |
 |
 |
Date :
2015-11-18 10:12:05 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้ครับ ว่าแต่ไม่ขอบอกได้ไหม มาถึงขั้นนี้แล้วคิดว่าน่าจะทำได้แล้วครับ อีกนิดเดียวเอง
เพราะมันไม่มีอะไรมากจริงๆ ครับ เช่น string[] strLine = line.Split(';');
strline.Length คิดว่าจะได้อะไรล่ะ มันก็จำนวนสมาชิกใน Array ก็เท่านั้นครับ
จากนั้นแล้วแต่เราจะไปให้งานอย่างไง ลองทำดูก่อนนะครับ
|
 |
 |
 |
 |
Date :
2015-11-18 14:05:12 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เด่วนะ พี่บัญดิษฐ ทำให้คิดอะไรมากขึ้นเลย...  

ปัญหา 2 ก็ตามเลย  

|
 |
 |
 |
 |
Date :
2015-11-18 22:50:42 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
  
ปัญหา 2 ได้แล้ว
เพิ่ม CODE
this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
this.reportViewer1.RefreshReport();
ที่ reportViewer1_Load (หน้าForm1) ใช่ป่ะ
|
 |
 |
 |
 |
Date :
2015-11-18 23:31:06 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใน DataSet จะไม่ถูกเพิ่มเข้ามา ถ้าต้องการเพิ่มเราก็ไปเพิ่มใน Class แล้วค่อยมากด Refresh หน้าออกแบบ report ครับ
จากนั้นแล้วแต่เราว่าจะอ่านมาเก็บจาก Index ที่เท่าไร บางครั้งไม่จำเป็นต้องมี Report เดียวก็ได้นะครับ กรณีที่ Text File นั้น
รูปแบบไม่คงที่ จะทำให้เกิด Error เสียเปล่ากรณีที่เราเผลอไปอ่าน index ที่ไม่มีจริง อันนี้ก็แล้วแต่นะเพราะมันไม่ใช่ทางออก
ที่ดี แต่สำหรับมือใหม่ก็ทำอย่างนี้ไปก่อนก็ได้ครับ

|
 |
 |
 |
 |
Date :
2015-11-19 09:42:43 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วจะแก้ไงอ่ะ วิธีที่ดี ที่ไม่ทำให้เกิด Error ตึบเลย ***เราว่าจะอ่านมาเก็บจาก Index ที่เท่าไร คือ ?
พี่บัญดิษฐค่ะ พอค่า เป็น ลบ ก็ออก 0 เฉยเลยอ่ะ
BANPUE
Load Report -22kv Outgoing No.3
Daily
Date Time;KV(AB);kV(BC);kV(CA);IA;IB
24/06/15 00:30:00;22.38;22.32;22.25;167;165
24/06/15 01:30:00;22.37;22.45;22.22;--;-162
...
.
public static class Extensions
{
public static double IsNumeric(this string s)
{
foreach (char c in s)
{
if (!char.IsDigit(c) && c != '.')
{
return 0;
}
}
double result = double.Parse(s);
return result;
}
}
|
 |
 |
 |
 |
Date :
2015-11-19 21:27:18 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ไขโค้ดตามนี้ครับ
Code (C#)
01. public static class Extensions
02. {
03. public static double IsNumeric( this string s)
04. {
05. double n;
06. bool isNumeric = double .TryParse(s, out n);
07. if (isNumeric)
08. {
09. return n;
10. }
11.
12. return 0;
13. }
14. }

|
 |
 |
 |
 |
Date :
2015-11-20 08:25:29 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 29 เขียนโดย : Jirata เมื่อวันที่ 2015-11-19 21:27:18
รายละเอียดของการตอบ ::
อย่างที่แนะนำไปว่า ถ้า Text File ไม่ใช่มาตรฐานเดี่ยวคือแถวที่ 4 นั้น มีเพิ่มหรือลดขนาด
อย่างเช่น
Date Time;KV(AB);kV(BC);kV(CA);IA;IB = index ก็เท่ากับ [0,1,2,3,4,5]
แต่บอกมี THB เพิ่ม และต้องการอ่านด้วย
Date Time;KV(AB);kV(BC);kV(CA);IA;IB:THB = index ก็เท่ากับ [0,1,2,3,4,5,6]
และอีกวันไม่แล้ว ไม่มี THB และ IA IB แต่เพิ่ม IC แทน
Date Time;KV(AB);kV(BC);kV(CA);IC = index ก็เท่ากับ [0,1,2,3,4]
เห็นไหมจำนวนสมาชิกลดลง index ก็เปลี่ยนตาม แล้วโปรแกรมจะทำอย่างไงละ ?
อย่างนี้เราต้องเขียนเพิ่มหรือแยก module และ report ก็ต้องมากว่าหนึ่งหรือแยกแต่ละแบบ
หรือไม่ก็ต้องเขียนกราฟเอง เพราะถ้าทำรายงานเป็นแบบการออกแบบไว้ก่อนแล้วแค่แสดงข้อมูลอาจจะไม่ตรงโยชน์
เพราะข้อมูลมีหลายรูปแบบ คงเห็นภาพนะ
การเขียนโปรแกรมแบบวิธีที่ดีนั้น ไม่มีครับ มีแต่ใครคิด Algorithm ได้ดีกว่ากันเท่านั้นครับ
เพราะอาจเป็นที่ไม่ได้เรียนสายนี้โดยตรง ถ้าตอบผิดท่านอื่นสามารถเสริมและช่วยแก้ไขให้ถูกด้วยนะครับผม ขอบคุณครับ
ปล.
โปรแกรมไม่จำเป็นต้องมีหน้าเดียวแล้วreport ก็เหมือนกัน ให้ผู้ใช้เลือกว่าจะดูแบบไหนก็ดีเหมือนกัน
|
 |
 |
 |
 |
Date :
2015-11-20 10:02:40 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่บัญดิษฐค่ะ ทำไม add Dataset 2 ไป แล้วทำไมนำมาใช่ไม่ได้อ่ะ ขึ้น <<Expr>> จะนำ ตัวหนังสือบรรทัดที่ 1 กับ 2 มาใช่นะ
BANPUE
Load Report -22kv Outgoing No.3
Daily
Date Time;KV(AB);kV(BC);kV(CA);IA;IB
24/06/15 00:30:00;22.38;22.32;22.25;167;165
24/06/15 01:30:00;22.37;22.45;22.22;--;-162
...
.

|
 |
 |
 |
 |
Date :
2015-11-26 09:16:49 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่บัญดิษฐค่ะ ทำมาถึงนี้แล้วก็ยังไม่ได้ แล้วตารางก็มี 0 ออกมา 2 บรรทัด

Code (C#)
001. namespace DailyReport
002. {
003. public class logmaster
004. {
005.
006.
007. public string title_c { get ; set ; }
008. public string strLine { get ; set ; }
009. public List<logdetail> _logdetail { get ; set ; }
010.
011. public static logmaster getLogmaster()
012. {
013. string [] lines = System.IO.File.ReadAllLines(@ "D:\logTest.txt" );
014. int lineNum = 0;
015. logmaster logM = new logmaster();
016. logM._logdetail = new List<logdetail>();
017. foreach ( string line in lines)
018. {
019. lineNum++;
020. if (lineNum == 1)
021. {
022.
023.
024. string [] StaArray;
025. StaArray = line.Split( '\t' );
026. logdetail Sta_name = new logdetail();
027. Sta_name.Station_name = StaArray[0];
028. logM._logdetail.Add(Sta_name);
029.
030. }
031. if (lineNum == 2)
032. {
033.
034.
035. string [] BayArray;
036. BayArray = line.Split( '\t' );
037. logdetail Ba_name = new logdetail();
038. Ba_name.Bay_name = BayArray[0];
039. logM._logdetail.Add(Ba_name);
040.
041. }
042. if (lineNum == 3)
043. {
044. logM.title_c = line;
045. Console.WriteLine( "\t" + logM.title_c);
046. }
047. if (lineNum == 4)
048. {
049.
050. string [] strLine = line.Split( ';' );
051. for ( int i = 0; i < strLine.Length; i++)
052. {
053. Console.WriteLine( "Array Index[{0}] = {1}" , i, strLine[i]);
054. }
055. Console.WriteLine( "Array Length : {0}" , strLine.Length.ToString());
056. Console.ReadLine();
057. }
058. if (lineNum > 4)
059. {
060. string str;
061. string [] strArray;
062. str = line;
063.
064. strArray = str.Split( ';' );
065. logdetail currentLog = new logdetail();
066. currentLog.Date_Time = strArray[0];
067. currentLog.kVab = strArray[1].IsNumeric();
068. currentLog.kVbc = strArray[2].IsNumeric();
069. currentLog.kVca = strArray[3].IsNumeric();
070. currentLog.Ia = strArray[4].IsNumeric();
071. currentLog.Ib = strArray[5].IsNumeric();
072. currentLog.Ic = strArray[6].IsNumeric();
073. currentLog.MW = strArray[7].IsNumeric();
074. currentLog.MVar = strArray[8].IsNumeric();
075. currentLog.PF = strArray[9].IsNumeric();
076. currentLog.THDiB = strArray[10].IsNumeric();
077. currentLog.THDvB = strArray[11].IsNumeric();
078. logM._logdetail.Add(currentLog);
079.
080. }
081. }
082. return logM;
083. }
084. }
085. public class logdetail
086. {
087. public string Date_Time { get ; set ; }
088. public double kVab { get ; set ; }
089. public double kVbc { get ; set ; }
090. public double kVca { get ; set ; }
091. public double Ia { get ; set ; }
092. public double Ib { get ; set ; }
093. public double Ic { get ; set ; }
094. public double MW { get ; set ; }
095. public double MVar { get ; set ; }
096. public double PF { get ; set ; }
097. public double THDiB { get ; set ; }
098. public double THDvB { get ; set ; }
099. public string Station_name { get ; set ; }
100. public string Bay_name { get ; set ; }
101. }
102. public static class Extensions
103. {
104. public static double IsNumeric( this string s)
105. {
106. double n;
107. bool isNumeric = double .TryParse(s, out n);
108. if (isNumeric)
109. {
110. return n;
111. }
112.
113. return 0;
114. }
115. }
116. }
|
 |
 |
 |
 |
Date :
2015-11-26 14:14:44 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองดูข้อมูล TextFile บรรทัดก่อนวันที่ 24/06/15 ดูนะครับว่า ข้อมูลถูกต้องหรือเปล่า หรือว่าเป็นบัญหาที่ Report (ขนาดของ Report)
ลองตรวจดูก่อนนะครับผม ส่วนที่ว่า 2 DataSet ทำได้หรือยังครับ
|
 |
 |
 |
 |
Date :
2015-11-26 15:21:45 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ใช่ค่ะ ที่ข้อมูล TextFile บรรทัดก่อนวันที่ 24/06/15 ไม่มี แต่มันน่าจะเป็นเพราะ ทำ DataSet1 พอโปรแกรมอ่าน ก็เข้า if (lineNum == 1) และ if (lineNum == 2) พอมาถึง
if (isNumeric)
{
return n;
}
return 0;
พอมันไม่มีค่าก็เลย ให้เท่ากับ 0 อ่ะคะ แต่ไม่รู้จะแก้ยังไงเลย   

|
 |
 |
 |
 |
Date :
2015-11-27 09:23:20 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าเป็นไปได้ ขอ Text File ได้ไหมครับ ไม่ต้องเอามาทั้งหมดนะครับ เอาแค่ 100 row ก็พอครับ
chokbunthit@hotmail.com
|
 |
 |
 |
 |
Date :
2015-11-27 09:36:56 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ชื่อ logTest.txt ค่ะ
BANPUE
Load Report - 22 kV Outgoing No.3
Daily
DATE TIME;kV(AB);kV(BC);kV(CA);IA;IB;IC;MW;Mvar;%PF;%THDi(B);
24/06/15 00:30:00;22.38;22.58;22.25;167;165;174;6.26;1.72;96.39;1.1;
24/06/15 01:00:00;22.48;22.68;22.35;157;156;165;5.94;1.59;96.52;1.1;
24/06/15 01:30:00;22.43;22.61;22.28;149;148;157;5.64;1.46;96.77;0.1;
24/06/15 02:00:00;22.52;22.68;22.35;144;142;151;5.46;1.40;-96.81;0.0;
24/06/15 02:30:00;22.56;22.75;22.41;145;143;152;5.49;1.47;96.56;0.1;
24/06/15 03:00:00;22.60;22.78;22.48;141;139;148;5.34;1.45;96.47;0.1;
24/06/15 03:30:00;22.66;22.85;22.52;138;136;145;5.24;1.44;96.37;0.1;
24/06/15 04:00:00;22.71;22.90;22.56;135;134;--;5.15;1.46;96.19;0.5;
24/06/15 04:30:00;22.63;22.82;22.48;133;131;140;5.04;1.41;96.26;0.0;
24/06/15 05:00:00;22.56;22.75;22.41;130;128;137;4.93;1.38;96.29;0.0;
24/06/15 05:30:00;22.52;22.73;22.38;130;128;136;4.88;1.39;96.09;0.1;
24/06/15 06:00:00;22.40;22.58;22.24;136;133;141;5.03;1.53;95.60;0.1;
24/06/15 06:30:00;22.29;22.48;22.14;147;145;153;5.40;1.77;94.99;0.0;
24/06/15 07:00:00;22.36;22.58;22.26;145;144;149;5.35;1.68;95.36;0.1;
24/06/15 07:30:00;22.48;22.66;22.42;138;137;142;5.15;1.49;95.97;1.3;
24/06/15 08:00:00;22.49;22.65;22.43;137;137;142;5.12;1.58;-95.56;1.7;
24/06/15 08:30:00;22.52;22.66;22.45;132;133;137;4.94;1.60;95.07;2.0;
24/06/15 09:00:00;22.46;22.64;22.41;127;127;132;4.71;1.59;94.73;1.8;
24/06/15 09:30:00;22.26;22.36;22.20;140;140;145;5.11;1.80;94.25;1.7;
24/06/15 10:00:00;22.49;22.61;22.43;153;154;158;5.63;2.09;93.72;1.8;
24/06/15 10:30:00;22.66;22.80;22.62;154;155;159;5.70;2.14;93.57;1.6;
24/06/15 11:00:00;22.62;22.74;22.56;157;158;162;5.78;2.20;93.42;2.2;
24/06/15 11:30:00;22.56;22.68;22.52;160;162;166;5.91;2.24;93.48;2.5;
24/06/15 12:00:00;22.58;22.67;22.49;160;160;165;5.87;2.20;93.59;2.5;
24/06/15 12:30:00;22.59;22.69;22.52;156;157;161;5.74;2.15;93.57;2.5;
24/06/15 13:00:00;22.73;22.81;22.64;150;151;157;5.57;2.10;93.57;2.9;
24/06/15 13:30:00;22.65;22.75;22.56;142;143;147;5.30;1.78;94.72;3.2;
24/06/15 14:00:00;22.64;22.74;22.58;139;142;145;5.24;1.77;94.71;3.1;
24/06/15 14:30:00;22.54;22.58;22.45;146;148;153;5.47;1.86;94.66;2.9;
24/06/15 15:00:00;22.46;22.56;22.40;150;152;158;5.61;1.92;94.55;2.8;
24/06/15 15:30:00;22.41;22.52;22.37;151;152;158;5.60;1.89;94.67;3.0;
24/06/15 16:00:00;22.42;22.55;22.38;150;151;156;5.58;1.85;94.91;2.9;
24/06/15 16:30:00;22.46;22.56;22.42;151;152;157;5.62;1.87;94.83;2.7;
24/06/15 17:00:00;22.52;22.63;22.46;149;150;155;5.55;1.90;94.61;2.8;
24/06/15 17:30:00;22.62;22.76;22.60;148;151;153;5.55;1.93;94.38;2.9;
24/06/15 18:00:00;22.66;22.81;22.62;142;144;146;5.32;1.85;94.42;3.0;
24/06/15 18:30:00;22.47;22.61;22.44;136;137;140;5.07;1.64;95.08;2.6;
24/06/15 19:00:00;22.42;22.58;22.40;143;144;147;5.28;1.79;94.65;2.9;
24/06/15 19:30:00;22.31;22.49;22.27;152;152;157;5.53;2.02;93.92;2.3;
24/06/15 20:00:00;22.23;22.42;22.16;175;174;181;6.23;2.62;92.16;1.6;
24/06/15 20:30:00;22.40;22.61;22.27;204;200;211;7.16;3.34;90.61;1.7;
24/06/15 21:00:00;22.41;22.64;22.29;208;204;216;7.36;3.32;91.13;1.8;
24/06/15 21:30:00;22.55;22.75;22.43;217;215;226;7.83;3.37;91.84;2.0;
24/06/15 22:00:00;22.68;22.87;22.57;215;214;224;7.89;3.15;92.84;2.3;
24/06/15 22:30:00;22.69;22.88;22.58;209;208;218;7.76;2.82;93.97;2.5;
24/06/15 23:00:00;22.50;22.69;22.38;199;201;210;7.48;2.40;95.17;2.0;
24/06/15 23:30:00;22.48;22.65;22.38;190;190;199;7.14;2.17;95.62;1.8;
25/06/15 00:00:00;22.58;22.77;22.47;181;181;191;6.85;2.05;95.77;1.4;
|
 |
 |
 |
 |
Date :
2015-11-27 09:43:00 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สร้าง class clsINI.cs แล้วก๊อบไปใส่ได้เลยครับ
Code (C#)
01. using System;
02. using System.Collections.Generic;
03. using System.IO;
04. using System.Linq;
05. using System.Runtime.InteropServices;
06. using System.Text;
07.
08. namespace TORServices
09. {
10. public static class clsINI
11. {
12. [DllImport( "kernel32.dll" , EntryPoint = "GetPrivateProfileStringA" , CharSet = CharSet.Ansi, SetLastError = true , ExactSpelling = true )]
13. private static extern int GetPrivateProfileString( string lpApplicationName, string lpKeyName, string lpDefault, global::System.Text.StringBuilder lpReturnedString, int nSize, string lpFileName);
14. [DllImport( "kernel32.dll" , EntryPoint = "WritePrivateProfileStringA" , CharSet = CharSet.Ansi, SetLastError = true , ExactSpelling = true )]
15. private static extern int WritePrivateProfileString( string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
16. public static string ReadValue( string Path, string section, string key)
17. {
18. global::System.Text.StringBuilder sb = new global::System.Text.StringBuilder(255);
19. dynamic i = GetPrivateProfileString(section, key, "" , sb, 255, Path);
20. return sb.ToString();
21. }
22. public static void WriteValue( string Path, string section, string key, string value) { WritePrivateProfileString(section, key, value, Path); }
23. public static string textFileReader( string pathFileName)
24. {
25. string line;
26. StreamReader fs;
27. try
28. {
29. fs = new StreamReader(pathFileName);
30. line = fs.ReadToEnd();
31.
32.
33. Encoding encodeSource = Encoding.GetEncoding(fs.CurrentEncoding.CodePage);
34. fs.Close();
35.
36.
37. Encoding systemEncode = Encoding.Default;
38. Encoding targetEncode = encodeSource;
39.
40.
41. byte [] srcData = systemEncode.GetBytes( line );
42. byte [] dstData;
43.
44.
45. if ( targetEncode != systemEncode )
46. dstData = Encoding.Convert( systemEncode, targetEncode, srcData );
47. else
48. dstData = srcData;
49.
50.
51. return targetEncode.GetString(dstData);
52.
53. }
54. catch (Exception ex)
55. {
56. throw new IOException( "cannot find " + pathFileName,ex);
57. }
58.
59. }
60. public static System.Collections.Generic.List< string > textFileReaderFormline( string pathFileName)
61. {
62.
63. System.Collections.Generic.List< string > list = new System.Collections.Generic.List< string >();
64. System.IO.StreamReader fs;
65. fs = new System.IO.StreamReader(pathFileName, System.Text.Encoding.GetEncoding(874));
66.
67. string line;
68. while ((line = fs.ReadLine()) != null )
69. {
70. list.Add(line);
71. }
72. return list;
73.
74. }
75. }
76. }
|
 |
 |
 |
 |
Date :
2015-12-25 08:15:00 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ พี่บัญดิษฐ และคุณTOR_CHEMISTRY
ของพี่บัญดิษฐ มีให้เลือกเยอะ แต่ก็ งง เหมือนกัน เด่วจะลองเอาไปดัดแปลงดูนะ    
|
 |
 |
 |
 |
Date :
2015-12-27 21:59:28 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ๆ ช่วยหน่อยค่ะ
ติดปัญหาอีกละ ทำไม เขียน code แบบนี้ แล้วมันไปหาไฟล์ไม่เจออ่ะ
string path = Application.StartupPath + @"D:\SIPC.ini";

|
 |
 |
 |
 |
Date :
2015-12-28 00:03:24 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
string path = Application.StartupPath + @"D:\SIPC.ini";
เป็น
string path = Application.StartupPath + @"\SIPC.ini";
หรือ
string path = @"D:\SIPC.ini";
เลือกเอาซักอย่างหนึ่งครับ
ไม่งั้นมันจะเป็นประมาณแบบนี้
"G:\TestCSharp\MIDI_System\FileMng\bin\DebugD:\SIPC.ini"
//Application.StartupPath = G:\TestCSharp\MIDI_System\FileMng\bin\Debug
    
|
 |
 |
 |
 |
Date :
2015-12-28 08:08:45 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วๆๆๆๆ    ขอบคุณค่ะ คุณTOR_CHEMISTRY หาวิธีตั้งนานเลย เล่นไปตี3กว่า 

Code (C#)
001. using System;
002. using System.Collections;
003. using System.Collections.Generic;
004. using System.ComponentModel;
005. using System.Data;
006. using System.Drawing;
007. using System.Globalization;
008. using System.Linq;
009. using System.Text;
010. using Microsoft.Win32;
011. using System.Windows.Forms;
012. using System.Threading.Tasks;
013. using System.Runtime.InteropServices;
014. using System.IO;
015. using Ini;
016.
017. namespace DailyReport
018. {
019.
020. public class logmaster
021. {
022. public string Station_name { get ; set ; }
023. public string Bay_name { get ; set ; }
024. public string graph_name { get ; set ; }
025. public List<logdetail> _logdetail { get ; set ; }
026.
027. String path = @ "C:\SIPC\SIPC.INI" ;
028.
029. public static logmaster getLogmaster()
030. {
031.
032. IniFile ini = new IniFile(path);
033. string PatInstalac = ini.IniReadValue( "Paths" , "PatInstalac" ).ToString();
034. string Instalacion = ini.IniReadValue( "Parametros Activos" , "Instalacion" ).ToString();
035.
036. DateTime newdate = DateTime.Today;
037. string resultdate = newdate.ToString( "yyyyMMdd" );
038.
039. string SumText = (PatInstalac + @ "\" + Instalacion + @" \LOAD\DAILY\ " + resultdate + @" .TXT");
040.
041. FileInfo fi = new FileInfo(SumText);
042. if (fi.Exists)
043. {
044. string [] lines = System.IO.File.ReadAllLines(SumText);
045. int lineNum = 0;
046. logmaster logM = new logmaster();
047. logM._logdetail = new List<logdetail>();
048. foreach ( string line in lines)
049. {
050. lineNum++;
051. if (lineNum == 1)
052. {
053. logM.Station_name = line;
054. Console.WriteLine( "\t" + logM.Station_name);
055. }
056. if (lineNum == 2)
057. {
058. logM.Bay_name = line;
059. Console.WriteLine( "\t" + logM.Bay_name);
060. }
061. if (lineNum == 3)
062. {
063. logM.graph_name = line;
064. Console.WriteLine( "\t" + logM.graph_name);
065. }
066. if (lineNum > 4)
067. {
068. string str;
069. string [] strArray;
070. str = line;
071.
072. strArray = str.Split( ';' );
073. logdetail currentLog = new logdetail();
074. currentLog.Date_Time = strArray[0];
075. currentLog.Vab = strArray[1].IsNumeric();
076. currentLog.Vbc = strArray[2].IsNumeric();
077. currentLog.Vca = strArray[3].IsNumeric();
078. currentLog.Ia = strArray[4].IsNumeric();
079. currentLog.Ib = strArray[5].IsNumeric();
080. currentLog.Ic = strArray[6].IsNumeric();
081. currentLog.MW = strArray[7].IsNumeric();
082. currentLog.MVar = strArray[8].IsNumeric();
083. currentLog.PF = strArray[9].IsNumeric();
084. currentLog.THDiB = strArray[10].IsNumeric();
085. currentLog.THDvB = strArray[11].IsNumeric();
086. logM._logdetail.Add(currentLog);
087.
088. }
089. }
090. return logM;
091. }
092. else
093. {
094. System.Windows.Forms.MessageBox.Show( "No such file " + SumText);
095.
096. }
097. }
098.
099. }
100. public class logdetail
101. {
102. public string Date_Time { get ; set ; }
103. public double Vab { get ; set ; }
104. public double Vbc { get ; set ; }
105. public double Vca { get ; set ; }
106. public double Ia { get ; set ; }
107. public double Ib { get ; set ; }
108. public double Ic { get ; set ; }
109. public double MW { get ; set ; }
110. public double MVar { get ; set ; }
111. public double PF { get ; set ; }
112. public double THDiB { get ; set ; }
113. public double THDvB { get ; set ; }
114.
115. }
116. public static class Extensions
117. {
118. public static double IsNumeric( this string s)
119. {
120. double n;
121. bool isNumeric = double .TryParse(s, out n);
122. if (isNumeric)
123. {
124. return n;
125. }
126. return 0;
127. }
128. }
129. }
|
 |
 |
 |
 |
Date :
2015-12-28 14:23:56 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
String path = @"C:\SIPC\SIPC.INI";
public static logmaster getLogmaster()
เมื่อเราเรียกใช้งานแบบ static ทุกอย่าง(รึป่าวหว่า) ที่ method นั้นๆ อ้างถึงต้องเป็น static เช่นกันครับ
public static String path = @"C:\SIPC\SIPC.INI";
เรียบร้อยครับ
|
 |
 |
 |
 |
Date :
2015-12-28 14:43:51 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ได้ค่ะ กายเป็น Error บรรทัดที่ 29 แทน   
|
 |
 |
 |
 |
Date :
2015-12-28 15:05:19 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
public class logmaster
public static logmaster getLogmaster()
มันขัดแย้งกันอยู่ในตัวครับ
ลองย้อนกลับไปดูว่า
ที่จริงแล้วต้องการสร้าง class แบบ public หรือ public static ค่อยโยงลงมาที่ method ใน class อีกที
จะดีกว่าไม๊ครับ
|
 |
 |
 |
 |
Date :
2015-12-28 15:53:28 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่มี Error แล้วค่ะ แต่ไม่มีอะไรออกมากเลย ไม่รู้เข้าใจถูกรึเปล่าค่ะ
ในความคิดตอนนี้ พอ run โปรแกรมจะทำ Form2 ก่อนแล้วค่อยส่งค่าที่อยู่ข้อมูลไปให้ Form1 เพื่อทำกราฟ แต่ถ้า Form2 เข้า loop else จะจบโปรแกรม แล้วไม่ไป run Form1 ใช่รึเปล่าค่ะ งงเลย ตอนนี้ ??????

|
 |
 |
 |
 |
Date :
2015-12-29 02:02:53 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำได้แล้วค่ะ ลืมไปดูที่ Run(new Form2());    
|
 |
 |
 |
 |
Date :
2015-12-29 10:29:06 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ค่ะ ช่วยด้วยๆ งง ตรงข้ามหน้าอ่ะ
คือ หน้า templog.cs
Code (C#)
01. if (lineNum == 4)
02. {
03. string [] strLine = line.Split( ';' );
04. for ( int i = 0; i < strLine.Length; i++)
05. {
06. Console.WriteLine( "" , i, strLine[i]);
07. }
08.
09. DailyReport.Form1.logReport.selectReport = strLine.Length.ToString();
10. }
จะให้ส่งไปหน้า Form1.Designer.cs
Code (C#)
01. public static class logReport
02. {
03. public static string selectReport = string .Empty;
04. }
05.
06. private void InitializeComponent()
07. {
08. if (selectReport == "12" )
09. {
10. this .reportViewer1.LocalReport.ReportEmbeddedResource = "DailyReport.Report2.rdlc" ;
11. }
12. else
13. {
14. this .reportViewer1.LocalReport.ReportEmbeddedResource = "DailyReport.Report1.rdlc" ;
15. }
16. }
17. #endregion
18. public string selectReport { get ; set ; }
คือมันออกแต่ else อ่ะค่ะ
|
 |
 |
 |
 |
Date :
2016-01-04 10:16:13 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลืมบอกไปค่ะ ว่าทำได้แล้ว      
|
 |
 |
 |
 |
Date :
2016-01-04 20:21:02 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่บัญดิษฐ & lamaka.tor ช่วยด้วยค่ะ
ถ้าเป็นข้อมูลอย่างนี่จะ loop ยังไงดีค่ะ ข้อมูลอยู่ใน textfile มีประมาณ 60000+ /3เดือน เลยไม่รู้จะเก็บข้อมูลยังไงดีค่ะ ใจก็ว่าจะเก็บใน MySQL แต่ก็กลัวมีอะไรที่ดีกว่าหรือง่ายกว่า ท่านใดรู้บ้างคะ
*05/09/15 21:01:08.280 115kV SMC Line4 AUTO RECLOSE LOCK OUT (MAIN1) LOCKOUT
05/09/15 21:00:58.237 115kV SMC Line4 DISTANCE PHASE N (MAIN 1) TRIP
05/09/15 21:00:58.237 115kV SMC Line4 DISTANCE PHASE B (MAIN 1) TRIP
05/09/15 21:00:58.237 115kV SMC Line4 DISTANCE ZONE 2 (MAIN 1) TRIP
05/09/15 21:00:58.258 115kV SMC Line4 DISTANCE PHASE N (MAIN 1) NORMAL
05/09/15 21:00:58.258 115kV SMC Line4 DISTANCE PHASE B (MAIN 1) NORMAL
05/09/15 21:00:58.258 115kV SMC Line4 DISTANCE ZONE 2 (MAIN 1) NORMAL
*05/09/15 21:01:55 115kV SMC Line4 VOLTAGE C-A UND
*05/09/15 21:01:55 115kV SMC Line4 VOLTAGE B-C UND
*05/09/15 21:01:55 115kV SMC Line4 VOLTAGE A-B UND
https://onedrive.live.com/redir?resid=B53AD5381DE710E7!219&authkey=!AFRvCBxCQUSpL5Y&ithint=file%2cTXT
|
 |
 |
 |
 |
Date :
2016-01-19 09:19:53 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
*05/09/15 21:01:08.280 115kV SMC Line4 AUTO RECLOSE LOCK OUT (MAIN1) LOCKOUT
*05/09/15 21:01:55 115kV SMC Line4 VOLTAGE C-A UND
อ่อป่าวค่ะ จะแยกเป็น
EDATE=>05/09/15 21:01:08
ETIME=>280
ENAME=>115kV SMC Line4
EDES=>AUTO RECLOSE LOCK OUT (MAIN1)
ESTATUS=>LOCKOUT
EOTHER=>
และ
EDATE=>05/09/15 21:01:55
ETIME=>
ENAME=>115kV SMC Line4
EDES=>VOLTAGE C-A
ESTATUS=>
EOTHER=>UND
อะค่ะ ข้อมูลจะเป็นประมาณนี้อ่ะคะ

|
 |
 |
 |
 |
Date :
2016-01-19 18:59:36 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (C#)
01. public partial class Form1 : Form
02. {
03. public Form1()
04. {
05. InitializeComponent();
06. }
07. string filetxt = @ "C:\EVENTOS_2.TXT" ;
08. string strRegex = @ "(?:([0-9][0-9]/[0-9][0-9]/[0-9][0-9]\s[0-9][0-9]:[0-9][0-9]:[0-9][0-9])[\s|\.]([\s|0-9]{3})\s{1,}(115kV SMC Line\d)\s{2,}(.*?)\s{5,}(\w+))" ;
09. private void Form1_Load( object sender, EventArgs e)
10. {
11. System.Text.RegularExpressions.Regex RgxLines = new System.Text.RegularExpressions.Regex(strRegex);
12.
13. foreach (System.Text.RegularExpressions.Match match in RgxLines.Matches(System.IO.File.ReadAllText(filetxt)))
14. {
15. if (match.Groups[2].Value.Trim().Length > 0)
16. {
17. dataGridView1.Rows.Add(match.Groups[1].Value, match.Groups[2].Value, match.Groups[3].Value, match.Groups[4].Value, match.Groups[5].Value, "" );
18. }
19. else
20. {
21. dataGridView1.Rows.Add(match.Groups[1].Value, match.Groups[2].Value, match.Groups[3].Value, match.Groups[4].Value, "" , match.Groups[5].Value);
22. }
23. }
24.
25. }
26.
27.
28. }
นี่ที่ได้จาก http://regexhero.net/tester/
ครับ

เมื่อเราโค้ดมาลงใน C# ก็ออกมาเป็นแบบนี้

****ต้องขอโทษด้วยครับที่ใช้ regex ตอนนี้ผมหัดใช้ regex อยู่ทุกอย่างที่ผมทำจึงต้องให้เป็น regex   
แต่มันก็ง่ายดีนะครับ
อธิบาย
@"(?:([0-9][0-9]/[0-9][0-9]/[0-9][0-9]\s[0-9][0-9]:[0-9][0-9]:[0-9][0-9])[\s|\.]([\s|0-9]{3})\s{1,}(115kV SMC Line\d)\s{2,}(.*?)\s{5,}(\w+))"
จะจัดกลุ่มให้ได้ 1 กลุ่มตามรูปแบบนี้โดยชข้างในจะมี 5 กลุ่ม
*05/09/15 20:58:41.910 115kV SMC Line4 AUTO RECLOSE LOCK OUT (MAIN1) LOCKOUT
*05/09/15 20:59:09 115kV SMC Line1 VOLTAGE C-A UND
กลุ่ม 1 ([0-9][0-9]/[0-9][0-9]/[0-9][0-9]\s[0-9][0-9]:[0-9][0-9]:[0-9][0-9]) => 05/09/15 20:58:41/05/09/15 20:59:09
กลุ่ม 2 ([\s|0-9]{3}) => ช่องว่าง/910
กลุ่ม 3 (115kV SMC Line\d) => 115kV SMC Line ตามด้วย จำนวนเต็ม **ไม่ชอบเปลี่ยนได้ครับ
กลุ่ม 4 ([A-Z0-9\s{1})(]+) => AUTO RECLOSE LOCK OUT (MAIN1)/VOLTAGE C-A
กลุ่ม 5 (\w+) => LOCKOUT/UND
ความจริงต้องให้ได้ 6 กลุ่มเพราะ LOCKOUTและ UND อยู่คนละกลุ่ม
แต่ผมแก้โดย
dataGridView1.Rows.Add(match.Groups[1].Value, match.Groups[2].Value, match.Groups[3].Value, match.Groups[4].Value, match.Groups[5].Value, "");
}
else
{
dataGridView1.Rows.Add(match.Groups[1].Value, match.Groups[2].Value, match.Groups[3].Value, match.Groups[4].Value,"", match.Groups[5].Value);
วิธีบ้านๆของผมก็มีแค่นี้ครับ
ส่วนอยากแก้ไขตรงไหนก็ลองๆแก้ดูครับ
|
 |
 |
 |
 |
Date :
2016-01-20 10:57:07 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
555 ขอยอมแพ้คุณ TOR เลยงานนี้ เพราะผมยังไม่เข้าใจ การใช้งาน regex เลย
แบบว่าถ้าถามตอนนี้ว่าเข้าใจระดับไหนแล้ว ก็คงต้องตอบว่า 0 ครับ
อย่างไงก็ขอบคุณมากเลยครับ ที่อธิบายอย่างละเอียด "สังคมต้องการคนแบบนี้"
เดียวจะลองเอาไปใช้ดูบาง ส่วนมากผมจะ Split เอา
|
 |
 |
 |
 |
Date :
2016-01-20 11:13:25 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
   
หาาาาพี่บัญดิษฐ ยังไม่เข้าใจ แล้วจะเข้าใจด้วยรึเปล่านะ T_T แต่ก็จะพยายามนะ ขอบคุณพี่ๆมากที่ช่วยแนะนำ
|
 |
 |
 |
 |
Date :
2016-01-20 22:45:32 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ค่ะ ไม่เข้าใจเลยค่ะ
\s{1,} => เว้นวรรค 1 ทีหรอค่ะ
(115kV SMC Line\d) => \d จะเปลี่ยนแต่ตัวเลขแต่มันมีหลายชื่ออ่ะ
115kV SMC BUSTIE1
115kV SMC BUSTIE2
CPM
SMC COMMON
115kV SMC Line1-8
Communication PROCOME
\s{2,} => เว้นวรรค 2 ทีหรอค่ะ
(.*?) => คืออะไรหรอค่ะ
\s{5,} => เว้นวรรค ถ ทีหรอค่ะ
(\w+) => คืออะไรหรอค่ะ
มันไม่เห็นออกเหมือนพี่เลยค่ะ เป็นเพราะกลุ่มที่ 3 รึเปล่า

|
 |
 |
 |
 |
Date :
2016-01-26 08:14:40 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex%28v=vs.110%29.aspx
http://www.webub.com/PHP_Regular_Expressions_Regular_Expression-69-10.html
http://www.ninenik.com/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99_character_classes_%E0%B9%83%E0%B8%99_Regular_Expressions_%E0%B8%82%E0%B8%AD%E0%B8%87_PHP-396.html
http://www.thaimisc.com/r/view.php?id=402&category=16
แปลกแต่จริงที่ regex C# ภาษาไทยมีน้อยมากๆๆ ส่วนใหญ่ไปกองกันอยู่ใน PHP,JAVA กัน
แต่ผมก็มีทางออกมาให้อีกแล้วครับ(เปลี่ยนไปเรือยๆจนกว่าจะหาทางกลับมาจุดเริ่มต้นไม่เจอ 5555)
มาคราวนี้ใช้วิธีนับแบบบ้านๆ ครับ
รูปแบบคือ
*05/09/15 20:58:41.910 115kV SMC Line4 AUTO RECLOSE LOCK OUT (MAIN1) LOCKOUT
1(*)/17(05/09/15 20:58:41)/1(.)/4(910 )/21(115kV SMC Line4 )/41(AUTO RECLOSE LOCK OUT (MAIN1) )/16(LOCKOUT )/3( )
1+17+1+4+21+41+16+3 = 104 พอดีเป๊ะๆครับ
Code (C#)
01. public partial class Form1 : Form
02. {
03.
04. DataGridView dataGridView1 = new DataGridView() {Dock = System.Windows.Forms.DockStyle.Fill,Name = "dataGridView1" };
05. DataGridViewTextBoxColumn Column1 = new DataGridViewTextBoxColumn() { HeaderText = "Line" , Name = "Column1" , Width = 200 };
06. DataGridViewTextBoxColumn Column2 = new DataGridViewTextBoxColumn() { HeaderText = "EDATE" , Name = "Column2" };
07. DataGridViewTextBoxColumn Column3 = new DataGridViewTextBoxColumn() { HeaderText = "ETIME" , Name = "Column3" };
08. DataGridViewTextBoxColumn Column4 = new DataGridViewTextBoxColumn() { HeaderText = "ENAME" , Name = "Column4" };
09. DataGridViewTextBoxColumn Column5 = new DataGridViewTextBoxColumn() { HeaderText = "EDES" , Name = "Column5" };
10. DataGridViewTextBoxColumn Column6 = new DataGridViewTextBoxColumn() { HeaderText = "ESTATUS" , Name = "Column6" };
11. DataGridViewTextBoxColumn Column7 = new DataGridViewTextBoxColumn() { HeaderText = "EOTHER" , Name = "Column7" };
12. public Form1()
13. {
14. InitializeComponent();
15. this .SuspendLayout();
16. ((System.ComponentModel.ISupportInitialize)( this .dataGridView1)).BeginInit();
17. this .dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
18. this .dataGridView1.Columns.AddRange( new System.Windows.Forms.DataGridViewColumn[] {Column1,Column2,Column3,Column4,Column5,Column6,Column7});
19. this .Controls.Add( this .dataGridView1);
20. ((System.ComponentModel.ISupportInitialize)( this .dataGridView1)).EndInit();
21. this .ResumeLayout( false );
22. }
23.
24. private void Form1_Load( object sender, EventArgs e)
25. {
26. foreach ( string line in System.IO.File.ReadAllLines(@ "C:\EVENTOS_2.TXT" ))
27. {
28. if (line.Length >= 104)
29. dataGridView1.Rows.Add(line,
30. line.Substring(1, 17).Trim(),
31. line.Substring(19, 4).Trim(),
32. line.Substring(23, 21).Trim(),
33. line.Substring(44, 41).Trim(),
34. line.Substring(85, 16).Trim(),
35. line.Substring(101, 3).Trim());
36. }
37.
38. }
39. }

แต่ว่าช้ามากเลย
เอาเป็นว่าถ้าผมหา regex ที่เร็วกว่านี้จะเอามานำเน๋อใหม่นะครับ
|
 |
 |
 |
 |
Date :
2016-01-26 10:41:18 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตัด
if (line.Length >= 104)
ออกก็ได้ครับ
ไม่ต่างกัน
|
 |
 |
 |
 |
Date :
2016-01-26 11:13:54 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ค่ะ จะอัพขึ้น mySQL ยังไงดีค่ะ
ที filetext มีจำนวน 37 บรรทัด และจะเพิ่มขึ้นเรื่อยๆ
ที่ mySQL มีจำนวนแค่ 3 บรรทัดของ filetext ตามรูปค่ะ ไม่รู้จะเขียนเงื่อนไข ยังไงค่ะ ให้ไปอ่าน ทุกๆ 1s.

Code (SQL)
01.
02.
03.
04.
05.
06.
07.
08.
09.
10. SET SQL_MODE= "NO_AUTO_VALUE_ON_ZERO" ;
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22. CREATE TABLE `eventos` (
23. `ID` int (15) NOT NULL auto_increment,
24. `EDATE` datetime NOT NULL ,
25. `ETIME` varchar (3) NOT NULL default '000' ,
26. `ENAME` varchar (20) NOT NULL ,
27. `EDES` varchar (40) NOT NULL ,
28. `ESTATUS` varchar (15) NOT NULL ,
29. `EOTHER` varchar (3) NOT NULL ,
30. KEY `ID` (`ID`)
31. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
32.
33.
34.
35.
36.
37. INSERT INTO `eventos` VALUES (1, '2015-10-28 13:53:12' , '000' , '115kV SMC Line1' , '01YB-01 STATUS' , 'CLOSE BYPASS' , '' );
38. INSERT INTO `eventos` VALUES (2, '2015-10-28 13:53:12' , '226' , '115kV SMC Line1' , '01YB-01 CLOSE BYPASS COMMAND' , 'FROM CSCS' , '' );
39. INSERT INTO `eventos` VALUES (3, '2015-10-28 13:53:39' , '000' , '115kV SMC Line2' , '02YB-01 STATUS' , 'CLOSE BYPASS' , '' );
|
 |
 |
 |
 |
Date :
2016-01-28 14:30:31 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เป็นผมนี่ for loop Insert แบบบ้านๆ แบบบ้านๆเลยครับ
เพราะตัว filetext เอง ก็สามารถเอามาทำเป็น list ได้อยู่แล้ว
แต่ถ้า 1s นี่อย่างเร็วเลยนะครับ
ถ้าเจอจังหวะเครื่องไหนอืดๆนี่ถือว่างานเข้าเลยก็ว่าได้
ลองโยนให้ thread จัดการครับ
thread แรก ทำงานไป thread ที่ 2 ก็ทำงานต่อได้
แต่ database จะไม่เรียงกันครับ
|
 |
 |
 |
 |
Date :
2016-01-28 15:16:42 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ว่าแต่ Data ขนาดนี้ ตัว Mysql จะรับไว้เหรอครับผม ไม่ลองดูวิธีอื่นดูก่อนลองคิดดูนะว่าแต่ละวันข้อมูลทั้งหมดกี่บรรทัดใน Text File
มันก็เท่ากับเรา Insert records เท่ากับจำนวนนั้น ไม่อย่างนั้นจะทำให้ทำงานช้าไปอีกนะ ไม่ลองศึกษาพวก NoSQL
ดูครับ มันน่าจะสนับสนุนทางนี้มากกว่านะครับผม
รอท่านอื่นด้วยนะครับ อาจจะมีบางท่านที่ใช้ mysql ที่ทำงานหนักๆอย่างนี้ก็ได้ครับ
|
 |
 |
 |
 |
Date :
2016-01-28 16:03:53 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ค่ะ ช่วยด้วยค่ะ ติดปัญหาอ่ะ เอา bb ออกมาใช้ไม่ได้
มันข้ามลูป if ไม่ได้    
Code (C#)
01. string [] lines = System.IO.File.ReadAllLines(SumIniFile);
02. int lineNum = 0;
03. foreach ( string line in lines)
04. {
05. lineNum++;
06. if (lineNum == 1)
07. {
08.
09. string [] aa = line.Split( ' ' );
10. int bb = Int32.Parse(aa[7]);
11. System.Windows.Forms.MessageBox.Show( " " + bb, "OK " );
12. }
13. if (lineNum == bb)
14. {
15. if (line.Length >= AlaEnd)
16. dataGridView1.Rows.Add(
17. line.Substring(1, 17).Trim(),
18. line.Substring(19, 3).Trim(),
19. line.Substring(Name, CENAME).Trim(),
20. line.Substring(Des, CDes).Trim(),
21. line.Substring(Sta, CSta).Trim(),
22. line.Substring(Ala, 3).Trim());
23.
24. }
25. }

|
ประวัติการแก้ไข 2016-01-29 21:59:06 2016-01-29 22:00:04
 |
 |
 |
 |
Date :
2016-01-29 21:38:36 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่านจาก #NO0 - #NO66
ขำดี และยกตัวอย่าง่ายฯ (Algorithm)
37 มันเข้ามันออกมันเข้ามันออก
คำอธิบายง่ายฯ มันเข้ามันออกมันออกมันเข้า
--- จะรู้ได้อย่างไรว่ามันออกไปวันไหน (ที่คุณต้องการ) ?
------- ก็ดูวันเข้า
--- จะรู้ได้อย่างไรว่ามันเข้าวันไหน(ที่คุณต้องการ) ?
------- ก็ดูวันออก
ตายห่าเลย Algorithm การคิดของ วิศวะ/เคมี/etc...
|
 |
 |
 |
 |
Date :
2016-01-29 22:34:24 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
string str = lines[lines.Leangh-1];
ใช่ที่ต้องการป่าวครับ
|
 |
 |
 |
 |
Date :
2016-01-29 22:45:44 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ค่ะ ถ้าจะ run โปรแกรมแล้ว ตั้งเวลาให้วิ่งอ่าน ซ้ำๆเหมือนเดิมยังไงค่ะ
|
ประวัติการแก้ไข 2016-01-30 11:58:21
 |
 |
 |
 |
Date :
2016-01-29 23:14:16 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมไม่แน่ใจว่าเข้าใจถูกไม๊นะครับ
ถ้าหาก database จากตอนแรก มี 37 แถว พออีกซัก 1 นาที มันก็จะเพิ่มขึ้น
สมมติให้เพิ่มเป็น 500 ละกัน
แบบนั้นเราสามารถเก็บรายชื่อไฟล์ กับ log ล่าสุดไว้ใช้งานได้ครับประมาณว่า
void Refresh(string file,Int Lastlog)
{
ร่ายยาวไปครับ
เสร็จแล้วก็ Insert file Lastlog ตัวใหม่(500)
}
แบบนี้เราก็เก็บได้เรื่อยๆแล้วครับ
แต่ถ้าเป็นคนละไฟล์ แนะนำให้ ใช้ thread หรืออะไรที่ทำงานเบื้องหลัง
ส่วนเบื้องหน้าก็มีหน้าที่ อ่าน แล้ว เอามาประมวลผลก็จะเร็วขึ้นครับ
อย่างอาจจะเขียนเป็น consoleApp หรือ winServices ก็ได้ครับ
|
 |
 |
 |
 |
Date :
2016-01-30 16:12:37 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ค่ะ กำลังทำอยู่พอดีค่ะ ใช้ win Services แต่ก็ติด ติด ไม่รู้ว่า ติดที่ไหน T_T !!! เพราะทำตาม youtube ไป
https://www.youtube.com/watch?v=EwTYYPRcWj0
งง ตรงจะเอาcode ไปใส่ ไม่รู้จะใส่หน้าไหน ?
พอเพิ่ม System.Windows.Forms.Application.Run(); เข้าไป ก็เก็บDB ได้ แต่กลับ stop ไม่ได้ ไป Uninstall ออก ก็ไม่ออก ต้องไปลบที่ regedit แทน
พี่ lamaka.tor แนะนำด้วยค่ะ
ProjectInstaller.cs
Service1.cs
Code (C#) Service1.cs
01. public Service1()
02. {
03.
04.
05. InitializeComponent();
06.
07. }
08.
09. public void OnDebug()
10. {
11. OnStart( null );
12. }
13.
14. protected override void OnStart( string [] args)
15. {
16. timer1.Interval = 1000;
17. timer1.Start();
18.
19.
20. System.Windows.Forms.Application.Run();
21.
22. string sFile = @ "C:\SIPC\EJEC\OnOffService.TXT" ;
23. string sDate = DateTime.Now.ToString();
24.
25. System.IO.StreamWriter oFile = new System.IO.StreamWriter(sFile, true );
26. oFile.WriteLine( "On " + sDate + "\n" );
27. oFile.Close();
28.
29.
30. ////notePad.StartInfo.Arguments = "ProcessStart.cs";
31.
32. ////System.Windows.Forms.MessageBox.Show("Start : OK", "KK ");
33.
34. ////this.Stop();
35. }

|
ประวัติการแก้ไข 2016-02-01 21:05:06 2016-02-02 00:33:05
 |
 |
 |
 |
Date :
2016-02-01 21:01:40 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ค่ะ ช่วยด้วยคะ
เพื่อ กดขั้นตอนที่ 2 แล้ว จะให้ form1 โหลดใหม่โดยเอา ค่าจาก form2 ไป Query แล้วไปให้ form1 โดยที่ไม่ new Form1().ShowDialog();   

|
 |
 |
 |
 |
Date :
2016-02-17 14:55:42 |
By :
Jirata |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|