ครั้งแรกผมว่าจะสอนวิธีติดตั้งเอง แต่ก็กลัวเรื่อง ลิขสิทธิ์ (เอ๊ะ หรือว่าคิดมากไปเอง)
เอาเป็นว่า ไปดูเว็บฝรั่งก็ได้น่ะ หรือไม่ก็ youtube ก็มีน่ะ
http://sapficonsultant.com/sap-erp-6-0-ehp6-ides-install-on-oracle-and-windows-2008-r2/
เวลาผมดูก็อ่านภาษาอังกฤษไม่ออกเหมือนกัน (แต่ถ้าภาษาลาว มาโลด อ้ายบ่ย่านดอกเด้อ สิบอกให้)
ดูฝรั่งสอนก็ อาศัยการดูรูปเอา หรือขั้นตอนต่างๆ เขาก็จะบอกอยู่น่ะฮ่ะ
แต่จริงๆ sap มันแยกย่อยออกมาหลายตัวเหมือนกันน่ะ
แต่ถ้าใครสนใจอยากจะเขียนจริงๆ ลอง sap netweaver ก็ได้ มันจะได้อยู่ 90 วัน (มั้ง)
แต่ต้องไปสมัครสมาชิกก่อนเน้อ ถึงจะโหลดได้
https://store.sap.com/sap/cpa/ui/resources/store/html/SolutionDetails.html?pcntry=US&sap-language=EN&pid=0000000218
เขียนได้เหมือนกัน แต่ก่อนผมก็ใช้ฝึกอยู่ ใช้ Database MaxDB แต่จะไม่เห็นพวก menu อะไรน่ะ มีแต่ sap tool
แต่แค่นี้ก็พอเขียนแล้วล่ะ
เวลาติดตั้ง ไม่ยากเท่าไหร่ ลง jdk (่Java) ใน youtube ก็มีสอนน่ะ ของอีตาฝรั่งอันหนึ่งนี่ล่ะ
https://www.youtube.com/watch?v=km0MbEQxvOo
ผมว่าเขาสอนดีน่ะ
*
แต่สำหรับใครที่อยากลงตัวเต็ม อันนี้ขอบอกเลยน่ะ ผมหัดลงเป็นเดือน ถ้าครั้งแรกๆน่ะ ลองผิดลองถูกอยู่นั่นล่ะ
ลงวินโดว์ วันล่ะเป็นสิบรอบก็มี แต่ก็ไม่เป็นไร เราศึกษาหนิ เราไม่ได้อะไรมากมาย ขอให้ใจรักเน๊าะ
ความต้องการก็เยอะซ่ะเหลือเกิน Harddisk ก็ไม่ต่ำกว่า 500 GB (พื้นที่ว่างน่ะ) ไม่รวมลง windows
แต่ทุกวันนี้ ลงครั้งเดียวก็ผ่านล่ะ พอจับจุดได้
*ความรู้สึกของการเขียน ABAP ผมว่าก็เหมือนการเขียนโปรแกรมทั่วไปล่ะ ไม่มีอะไรยากไปว่าเลย แต่ชื่อ Table มันจะสั้นๆ Table ก็เป็นพัน
แต่ผมก็ไม่เคยทำงานด้านนี้ จริงๆน่ะ เพราะว่าการที่จะเข้าไปใน วงการ SAP ได้หนิ ยากเหมือนกัน อาศัยประสบการณ์ทั้งนั้น ไหนจะภาษาอังกฤษที่ผมอ่อนแออยู่
ทุกวันนี้ก็ศึกษาไปเรื่อยล่ะ (ได้ทุกภาษาแต่เป็นเป็ด ก๊าบๆๆ น่ะ) ไม่เป็นไร มันคือความสุขหนิ
*ส่วนค่าเรียน SAP ก็ไม่ต้องห่วง หมดนาเป็น ทุ่งๆ แถวบ้านผมทำนา (ลูกชาวนาเน๊าะ) แต่ก็แลกมาด้วยค่าตอบแทนที่สูง
อย่างว่าล่ะ เขียน SAP ABAP ได้อย่างเดียวคงไม่พอ คงต้องรู้เรื่อง Bussiness ของบริษัทเขาอีก เพราะในประเทศไทย เน้น All in One -กาแฟสำเร็จรูป
*อันนี้เว็บ SAP ที่ผมศึกษาอยู่
http://www.guru99.com/
ผมชอบน่ะ (ชอบตรงมีรูป 555) ป่าวหรอก เขาก็สอนดูีอยู่ อันไหนไม่รู้ก็ เปิด google แปลเอา หาเพิ่มเติมเอา แต่ถ้าเราบอกว่ามันยาก มันจะปิดกั้นเรามากเลยน่ะผมว่า
ถ้ายากปุ๊บ เราจะไม่อยากศึกษาเลย เหมือนสาวๆ ถ้าบอกว่าสวยปุ๊บ อยากรู้จักทันที แต่ถ้าบอกว่า ไม่สวย อ้วน ตุ้ยนุ้ย ฯลฯ ไม่ค่อยอยากรู้จัก
แต่สำหรับผม ผมชอบคนที่ใจน่ะฮ่ะ 555++
-จะมีใครหลงเข้ามาอ่านไหมหน้อ เห่อะๆ แต่ก็ไม่เป็นไร มันบล็อกของเรา ครั้งหนึ่งเราเคยได้เขียน อีกสักสิบปี มาอ่านก็คงไม่สาย 555++
* อยากฝากถึงใครที่จะไปเรียนน่ะ ถ้าใจเราไม่รัก ไม่ฝักใฝ่ ต่อให้ไปเรียนกับ อ. คนไหนก็เท่าเดิมล่ะ ถ้าจะศึกษาจริงๆ อ. Goo ก็มีเยอะ เหมือนกันน่ะ อาจจะเรียนรู้ช้ากว่าหน่อย แต่ประหยัดตังค์ได้มากเลยเด้อ
สิบอกให้.
วันพุธที่ 8 เมษายน พ.ศ. 2558
C# Delegate การส่งค่าระหว่าง ฟอร์ม
ผมเคยไปหาๆอ่านเรื่อง delegate ของคนอื่นที่เขียนไว้ แต่ก็ยาวซ่ะเหลือเกิน หรือเวลายกตัวเองก็เขียนซ่ะแบบ Advance เกิน ยากแก่การเข้าใจสำหรับ Progamon เป็ดน้อยอย่างผม
ดูจาก เว็บ microsoft ก็ประมาณว่า delegate สามารถเรียก Method อื่นได้ แต่ถึงอย่างนั้นก็ต้อง new Object อยู่ดี (อันนี้เดาเอง เห่อะๆ)
เข้าเรื่องเลย ***
จริงๆผมก็ไม่ค่อยเข้าใจเรื่อง delegate สักเท่าไหร่ แต่พอเขียนออกมาได้ ยังไงก็ศึกษาพอเป็นแนวทางแล้วกันเน๊าะ
หลักการที่ผมนำเอา delegate มาใช้ก็คงหนีไม่พ้นเรื่องส่งตัวแปรระหว่างฟอร์ม เช่น การทำ popHelp ต่างๆ
ส่วนหน้าตาก็ประมาณนี้
มาดูโค้ดกันเลยแล้วกัน
มาดูโค้ดกันเลยแล้วกัน
//Form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public delegate void SendControl(TextBox text); //ประกาศ Delegate ใช้สำหรับส่งไปฟอร์ม 2
private void cmdSend_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
//ส่ง
SendControl del = new SendControl(form2.funData);
del(this.txtName);
//รับ กลับมา
form2.passControl = new Form2.PassControl(PassData);
form2.Show();
}
private void PassData(object sender) // method รับค่ากลับ
{
this.label1.Text = ((TextBox)sender).Text;
}
}
//Form2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
// Define delegate
public delegate void PassControl(object sender); //ประกาศ Delegate ใช้สำหรับส่งไปฟอร์ม 1 ส่งค่ากลับ
public PassControl passControl; //
private void cmdSend_Click(object sender, EventArgs e)
{
if (passControl != null)
{
passControl(txtName);
}
// this.Hide();
}
internal void funData(TextBox text) // method สำหรับรับค่ามา
{
this.label1.Text = text.Text;
}
}
คงพอเข้าใจอยู่หรอกเน๊าะ แต่จริงๆ เวลาค่าไป ใช้ Constructor ก็ได้น่ะ แล้วแต่ใครจะไปประยุกต์ใช้เลย
ผิดพลาดประการใด ก็ขออภัยไว้น่ะที่นี่ด้วย ผมก็ไม่ค่อยเข้าใจมัน หรือว่ามันไม่เข้าใจผมก็ไม่รู้น่ะฮ่ะ.. ^-^
วันจันทร์ที่ 6 เมษายน พ.ศ. 2558
ว่าด้วยเรื่องการแปลงวันที่ C# VB.NET
C# การแปลงวันที่ จากปี พ.ศ.ให้เป้นปี ค.ศ. (-543)
โหลด มาใส่ ครั้งแรก ตรงเปิด ฟอร์ม Form_Load
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
//อันนี้เอาไว้ get value จาก datetimepicker
var start_date = dateTimePicker1.Value.ToString("yyyy-MM-dd");
//แต่ถ้าจะเอาวันปัจจุบันก็ getdate() เอามาจาก sqlserver ไปเลย
//เวลาแปลงกลับ จาก datebase Convert.ToDateTime(ds.Tables[0].Rows[0]["start_date"].ToString());VB.Net การแปลงวันที่ จากปี พ.ศ.ให้เป้นปี ค.ศ. (-543)
Dim dateFormat As DateTimeFormatInfo = New CultureInfo("en-US").DateTimeFormat
Dim todate_date = DateTime.Now.ToString("yyyy-MM-dd", dateFormat) 'วันปัจจุบัน
Dim create_date As String = DateTimePicker1.Value.ToString("yyyy-MM-dd", dateFormat) 'วันที่จาก DateTimePicker
//CDate("12/12/2008") เวลาโหลดกลับ
วันพฤหัสบดีที่ 2 เมษายน พ.ศ. 2558
Module VB.Net เอาไว้ เพิ่ม ลบ แก้ไข
พอดีวันนี้ได้ ทดสอบ (CRUD) การเขียน Vb.net ปกติจะไม่เขียน เพราะไม่ชอบ vb มาแต่ไหนแต่ไรแล้ว
แต่เพราะจะไปสมัครงานอยู่ที่หนึ่ง เลยลองๆมาเขียนดู แต่ก็สนุกดีน่ะ
อันนี้ส่วนของ Table น่ะ
ผมอธิบายไม่เก่ง มาดูโค้ดเลยล่ะกัน
จากที่ไม่ชอบก็เริ่มชอบล่ะ
.... อย่างว่าล่ะครับทุกวันนี้ ถึงแม้เราเก่ง (ถ้าไม่เป็นนายตัวเองน่ะ) เราไปสมัครงาน ความต้องการของแต่ล่ะที่ก็เยอะซ่ะเหลือเกิน
ซึ่งการเขียนโปรแกรมเก่งอย่างเดียวคงไม่พอ ต้องได้ภาษา implement เป็น สอน User ได้ สรุป All in One
ฟังดูเหมือน คุณค่าของโปรแกรมเมอร์มันน้อยซ่ะเหลือเกิน แต่ก็ไม่เป็นไร เราทำแล้วเรามีความสุขที่ได้ทำมัน ผมก็ถือว่าคุ้มล่ะ
วันนี้เอาแค่นี้ก่อน เดียววันหลังหาอะไรมาเขียนเล่นๆ อีก
ไม่แน่ บางทีผมอาจสอน SAP ABAP ก็ได้ เพราะผมศึกษามาได้สักพักใหญ่ๆแล้ว ติดตามตอนต่อไปน่ะครับ..
โปรแกรมมั่ว..
แต่เพราะจะไปสมัครงานอยู่ที่หนึ่ง เลยลองๆมาเขียนดู แต่ก็สนุกดีน่ะ
อันนี้ส่วนของ Table น่ะ
CREATE TABLE [dbo].[users]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](50) NULL, [username] [varchar](50) NULL, [password] [varchar](50) NULL, CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
ผมอธิบายไม่เก่ง มาดูโค้ดเลยล่ะกัน
Module ExecuteModule
Dim conn As SqlClient.SqlConnection
Dim cmd As New SqlClient.SqlCommand
Dim adapter As New SqlClient.SqlDataAdapter
Dim ds As DataSet
Dim strConn As String = "Server=192.168.0.8;UID=sa;PASSWORD=Admin*9;database=tmpdbms;Max Pool Size=400;Connect Timeout=600;"
'ส่วนนี้จะเป็นส่วนของการเลือกข้อมูล Select จะส่งค่ากลับเป็น DataSet
'
Function GetDataSet(ByVal strSql As String) As DataSet
Try
conn = New SqlClient.SqlConnection(strConn)
With cmd
.Connection = conn
.CommandText = strSql
.CommandType = CommandType.Text
End With
ds = New DataSet()
adapter.SelectCommand = cmd
adapter.Fill(ds)
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
cmd.Dispose()
End Try
Return ds
End Function
'ส่วนนี้จะเป็นส่วนของการ insert update delete
Function Execute(ByVal strSql As String) As Integer
Dim i As Integer = 0
Try
conn = New SqlClient.SqlConnection(strConn)
conn.Open()
With cmd
.Connection = conn
.CommandText = strSql
.CommandType = CommandType.Text
End With
i = cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
cmd.Dispose()
End Try
Return i
End Function
'ส่วนนี้จะเป็นส่วนของการ insert update delete เหมือนกัน แต่เป็นการยัด parameter เข้าไป (โปรแกรมไม่ต้องเรียก sql ซ้ำ)
Function ExecuteParameter(ByVal strSql As String, ByVal hastTable As Hashtable) As Integer
Dim i As Integer = 0
Dim hast As DictionaryEntry
Try
conn = New SqlClient.SqlConnection(strConn)
conn.Open()
cmd = New SqlClient.SqlCommand(strSql, conn)
With cmd
For Each hast In hastTable
' .Parameters.Add(New SqlParameter("@sName","TEST"))
.Parameters.AddWithValue(hast.Key, hast.Value)
Next
End With
i = cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
cmd.Dispose()
End Try
Return i
End Function
' ส่วนนี้เป็นการเรียกใช้งาน procedure แล้วส่งค่ากลับเป็น DataSet
Function ExecuteProcedure(ByVal strSql As String, ByVal hastTable As Hashtable) As DataSet
Try
conn = New SqlClient.SqlConnection(strConn)
cmd = New SqlClient.SqlCommand(strSql, conn)
cmd.CommandType = CommandType.StoredProcedure
With cmd
For Each hast In hastTable
' .Parameters.Add(New SqlParameter("@sName","TEST"))
.Parameters.AddWithValue(hast.Key, hast.Value)
Next
End With
ds = New DataSet()
adapter.SelectCommand = cmd
adapter.Fill(ds)
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conn.Close()
cmd.Dispose()
End Try
Return ds
End Function
End Module
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim strSql As String
Dim result As Integer
If Button1.Text = "Save" Then
strSql = "insert into users values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')"
result = ExecuteModule.Execute(strSql)
If result > 0 Then
MsgBox("Insert Seccess")
End If
Else
strSql = "update users set name= '" + TextBox1.Text + "' , username = '" + TextBox2.Text + "',password = '" + TextBox3.Text + "' "
strSql &= " where id = '" + Label4.Text + "' "
result = ExecuteModule.Execute(strSql)
If result > 0 Then
MsgBox("Update Seccess")
End If
End If
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim strSql As String
strSql = "select * from users order by id desc"
Dim ds As New DataSet
ds = ExecuteModule.GetDataSet(strSql)
Call ClearValue()
If (ds.Tables(0).Rows.Count > 0) Then
Me.DataGridView1.DataSource = ds.Tables(0)
End If
Button1.Text = "Save"
End Sub
Private Sub DataGridView1_CellClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
TextBox1.Text = DataGridView1.Item(1, e.RowIndex).Value.ToString
TextBox2.Text = DataGridView1.Item(2, e.RowIndex).Value.ToString
TextBox3.Text = DataGridView1.Item(3, e.RowIndex).Value.ToString
Label4.Text = DataGridView1.Item(0, e.RowIndex).Value.ToString
Button1.Text = "Update"
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Dim strSql As String
strSql = "delete from users where id = @id "
Dim obj As New Hashtable
obj.Add("@id", Label4.Text)
Dim i As Integer
If MsgBox("ต้องการลบข้อมูล?", MsgBoxStyle.YesNoCancel, "Title") = MsgBoxResult.Yes Then
i = ExecuteModule.ExecuteParameter(strSql, obj)
If (i > 0) Then
MessageBox.Show("ลบข้อมูลเรียบร้อยแล้ว")
End If
End If
End Sub
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
Dim strSql As String
strSql = "SP_User"
Dim obj As New Hashtable
obj.Add("@parameter1", Convert.ToInt32(TextBox4.Text))
Dim ds As DataSet
ds = ExecuteModule.ExecuteProcedure(strSql, obj)
If (ds.Tables.Count > 0) Then
Me.DataGridView1.DataSource = ds.Tables(0)
End If
End Sub
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
Call ClearValue()
End Sub
Sub ClearValue()
Me.DataGridView1.DataSource = Nothing
Me.DataGridView1.Rows.Clear()
Me.DataGridView1.Columns.Clear()
End Sub
End Class
ปกผมเขียน แต่ C#,Java,PHP แต่มาเขียน VB.NET ก็ตื่นเต้นไปอีกแบบ จากที่ไม่ชอบก็เริ่มชอบล่ะ
.... อย่างว่าล่ะครับทุกวันนี้ ถึงแม้เราเก่ง (ถ้าไม่เป็นนายตัวเองน่ะ) เราไปสมัครงาน ความต้องการของแต่ล่ะที่ก็เยอะซ่ะเหลือเกิน
ซึ่งการเขียนโปรแกรมเก่งอย่างเดียวคงไม่พอ ต้องได้ภาษา implement เป็น สอน User ได้ สรุป All in One
ฟังดูเหมือน คุณค่าของโปรแกรมเมอร์มันน้อยซ่ะเหลือเกิน แต่ก็ไม่เป็นไร เราทำแล้วเรามีความสุขที่ได้ทำมัน ผมก็ถือว่าคุ้มล่ะ
วันนี้เอาแค่นี้ก่อน เดียววันหลังหาอะไรมาเขียนเล่นๆ อีก
ไม่แน่ บางทีผมอาจสอน SAP ABAP ก็ได้ เพราะผมศึกษามาได้สักพักใหญ่ๆแล้ว ติดตามตอนต่อไปน่ะครับ..
โปรแกรมมั่ว..
สมัครสมาชิก:
ความคิดเห็น (Atom)
การติดตั้ง SAP ABAP
ครั้งแรกผมว่าจะสอนวิธีติดตั้งเอง แต่ก็กลัวเรื่อง ลิขสิทธิ์ (เอ๊ะ หรือว่าคิดมากไปเอง) เอาเป็นว่า ไปดูเว็บฝรั่งก็ได้น่ะ หรือไม่ก็ youtube ...
-
public static String ThaiBaht(String txt) { String bahtTxt, n, bahtTH = ""; Double amount; try { amount = Double.parse...
-
ผมเคยไปหาๆอ่านเรื่อง delegate ของคนอื่นที่เขียนไว้ แต่ก็ยาวซ่ะเหลือเกิน หรือเวลายกตัวเองก็เขียนซ่ะแบบ Advance เกิน ยากแก่การเข้าใจสำหรับ Pr...
-
public static string cv(string num){ string[][] th_num = new string[3][]; string[] th_digit = { ""...