.Net อ่าน/ส่งค่า กับ CA/400
ตย. งานที่นำไปใช้
- ต้องการให้ Copy ข้อมูลจากหน้าจอ CA/400 ไปใส่ใน Excel หรือ โปรแกรมอื่นๆ
- ต้องการนำค่าจาก โปรแกรมอื่น มาใส่ใน CA/400
ข้อสังเกต คนที่เขียนได้ขนาดได้ ผมว่าเปลี่ยน CA/400 ไปเป็น .Net เลยดีกว่า 555
แต่ที่ต้องมาเสียเวลาทำตรงนี้ อาจจะเพราะ ไม่พร้อมที่จะหยุด CA/400 (ความคุ้นเคย)
... งานของผม โดนส่วนนี้เต็มๆ
CA/400 หรือ Client Access /400 ในชื่อบางรุ่นจะเรียก Personal Communication
ชื่อพวกนี้ คุ้นไว้ก็ดีครับ บางบทความ จะเปลี่ยนชื่อ
มาเริ่มกันเลย
หลักการ
เป็นการคุยกันระหว่าง Application บน Window
หลักการใหม่ๆ จะทำในรูป OleDB แล้ว... สาย .Net คุ้นเคยล่ะซิ
แต่ CA/400 เป็นโปรแกรมเก่า น๊ะครับ (มีพัฒนาน้อยมาก)
จำเป็นต้องใช้เทคโนที่เก่า นั่นคือ DDE (Dynamic Data Exchange)
คนที่เคยทำ DDE ก็ไปต่อได้เลย
แนวคิด DDE
App 2 ตัว ที่จะคุยกัน App 1 ต้องเป็น Server อีก App ก็เป็น Client
App ที่เป็น Server ต้อง "มีช่องทาง" ติดต่อและรูปแบบการติดต่อไว้ กรณีนี้ CA/400 เป็น Server น๊ะครับ
รูปแบบการติดต่อ มี 2 แบบ Hot กับ Cold (ภาษาใหม่ เรียก Synchronous กับ Asynchronous)
แนะนำ CA/400 เราจะใช้แบบ Cold เขียนได้ง่ายกว่า
การติดต่อกันภายใต้ Windows จะกำหนด ตัวแปรพื้นฐานไว้ 3 ตัว (จำไว้)
1. Application (Name) เช่น Excel,Word
2. Topic (ชื่อย่อยของ App) เช่น เปิด Excel หลาย file
3. Item (รายละเอียดการติดต่อ) เช่น Sheet, Col,Row, ...
แต่ละ App ที่ทำหน้าที่เป็น Server จะประกาศไว้ (ต้องหา คู่มือให้พบ)
CA/400 IBM ได้สร้างวิธีเชื่อมต่อไว้หลายแบบ อยู่ในหนังสือ Emulator Programming
ไม่ต้องแปลกใจว่าบางเรื่อง ค่อนข้างเก่า/ไม่เปลี่ยนแปลงมานาน
ใครสนใจ อยากเลือกใช้เทคนิคอื่นๆ ไปอ่านเพิ่มเติม ได้ครับ
คนที่มาสาย "ลุยงาน" ข้อมูลข้างต้น เพียงพอ ที่จะทำงานต่อได้แล้ว
ผมเชื่อว่า คุณน่าจะได้วิธี ที่มีรายละเอียดต่างจากผม
หลังจากอ่าน ผมปรับ code จาก VB6 เป็น code ที่สั้นลงมาก
รวมทั้ง สามารถประยุกต์เพิ่มได้อีก (จุดแข็ง ของ ความเข้าใจ)
ถ้ามีเวลา ผมก็ยังอยากจะอ่านเพิ่ม ... ดูตัวเลือกอื่น (อาจจะง่ายกว่านี้)
คนที่อยากได้ทางลัดสุดๆ รอดูเฉลยแล้วกันครับ (ถ้ามีเวลาจะจัดให้)
Code หลักไม่เกิน 1 หน้า(copy) เวลาเรียกใช้แต่ละงาน 3-6 บรรทัด
ขออภัย ผมมีนิสัย ค่อยๆสร้างคน ให้เข้าใจและเอาตัวรอดได้เอง มากกว่า ให้ทางลัดแบบสุดๆ
ด้านบน เป็นการ "ย่อ" จากหลายบทความ (ภาษาอังกฤษ)
... คนที่ไม่ชอบอ่านแค่เห็นบทความยาวๆ ภาษายากๆ ก็คงถอดใจ
ถ้าอ่านมาถึงตรงนี้ คุณจะอ่านบทาความกลุ่มดังกล่าว ง่ายขึ้นมาก
ทางลัดสุดๆ = ?
- Code อย่างเดียว (ถ้าบอก รายละเอียด ก็ยาวไป)
วิธีนี้ เหมาะกับ คนที่มีพื้นฐาน "ดี"
หรือ "มีที่ปรึกษา ประจำหน่วยงาน" (เขาคือหนังสือ ที่ตอบเฉพาะที่คุณอยากรู้)
- Code + คำอธิบาย บ้าง
เคยถามหลายคนแล้ว จะรู้สึกว่า อธิบายขาด กับ เกิน ประจำ (ไม่สามารถเขียนให้โดนใจ กับ ทุกคน)
อุปสรรค
ในมุมของผม คงหนีไม่พ้น
- ไม่ได้เขียน VB มานาน (กว่า 20 ปี) คำสั่ง,Syntax ไม่ต้องพูดถึง จำไ่ม่ได้ (ต้อง ค้นหา ตลอด)
- ไม่มีเวลามากพอ ค้นหา/เขียนโปรแกรมยากๆ ต่อเนื่องนานๆ
(หัวหน้า หลายคนคงทราบดี ต้องใช้เวลา คิดและกระจายงาน ออกไป)
DDE คืออะไร ใน VB เขียนอย่างไร ใน CA/400 จะติดต่ออย่างไร
- บางเทคนิคใหม่ ไม่มีความรู้เลย (อ่านพบ ต้องกลับไปดูพื้นฐานหรือไม่ ? หรือแค่ผ่านตาก็พอ)
เขียนแบบ OOP, AddHandler,...
ข้างต้นก็แค่ ข้ออ้าง (ที่จะไม่ทำ)
วันนี้ถ้าจะทำ ปัญหา คือ โอกาส ... ลุยเลย
ปัญหาจริงๆ
- ตอนแรกไม่รู้ว่า ต้องทำผ่าน DDE มองไปเรื่องอื่นเลย (ถ้าไปผิดทางก็ เสียเวลามาก)
>> เทคนิค ลองค้นหาดูถ้าเลย 15 นาที ไปต่อไม่ได้ ให้เปลี่ยน
>> ทยอยค้น 2 วัน สังเกตว่า ถ้าหยุดแล้วทำใหม่ อีกวัน จะได้ผลต่างกันกับทำต่อเนื่องใน 1 วัน
- DDE ทาง microsoft ประกาศหยุดพัฒนาใน .Net
คำแนะนำแรก คือ ต้องกลับไปเขียนด้วย VB 6.0 การกำหนดค่าทำผ่าน textBoX
แต่ความพยายามอยู่ที่ไหน ความพยายามอยู่ที่นั่น
>> มี post ไว้ มีคนเขียน nDDE ขึ้นมาเพื่อให้ใช้งานได้กับ .Net (ล่าสุดกลายเป็นตัวช่วยหลัก)
... แต่ วิธีเขียนติดต่อจะเปลี่ยนไปใช้เทคนิคใหม่ ด้วย
- ใน CA/400 ใช้ชื่ออะไร ?
ขอระบายสักนิด 555
บริษัทฯได้เริ่มใช้โปรแกรมประเภทนี้ตั้งแต่ 20 ปีที่แล้ว ด้วย VB 6.0
(ผมยังจำชื่อคนทำได้ ชื่อ อลิสรา)
เวลาผ่านไปจนเกิด .Net 2.0 -> 3.0 -> 3.5 -> 4.0 -> ตอนนี้ 4.5
ทุกครั้งที่มีโอกาส คุยกันในทีมงาน ก็จะบอกให้เปลี่ยน version (ทำให้มันเข้าใจง่าย)
ที่ได้ยินเหตุผลมา
- ยังไม่จำเป็น (ของเก่าก็ใช้ได้) เกิน 5 ปีก็แย่แล้ว แล้วทำไมคุณเปลี่ยนมือถือบ่อยๆ
- ไม่รู้, ไม่ว่าง "คุณ" รู้มากที่สุดในองค์กร, มีเวลามากที่สุด
(หน้าที่นี้ ได้คัดเลือก คนที่เหมาะจริงๆ)
(หน่วยงาน กำหนดหน้าที่ให้ เหลือเวลามาก ส่วนหนึ่งเพื่อทำงานกลุ่มนี้)
- พูดง่าย แต่ทำยาก ยังไม่ได้เริ่ม จะรุ้ได้อย่างไร
- ไม่อยากทำ (เรื่องที่ไม่รู้, เรื่องที่ต้องสอบถามคนอื่น) ???
"หนทางพิสูจน์ม้า กาลเวลาพิสูจน์คน"
วันนี้ เมื่อองค์กรกำหนดว่า ไม่มีทีมงานในด้านนี้ แต่งานต้องไม่เสียหาย
ก็ต้อง ทำเอง ครับ
ใช้เวลาอ่านแบบเข้าใจ 6-8 ชม. (ผมอ่านแบบนี้)
ถ้าอ่าน แบบลุยทดลองทำ ไม่ต้องเข้าใจมาก ก็น่าจะ 2 ชม.
...เสียเวลา คุย/ฟังเหตุผลข้างบน น่าจะต้องใช้เวลานานกว่า อีกน๊ะ 555
อีกสักนิด
- ความรู้ที่ใช้อ่าน อย่างไร ก็ต้อง "ถาม/คุย" ในเรื่องที่ตนเองไม่ถนัด
หลายคน เลือกที่จะทำงาน "คนเดียว" (เรื่องที่ยาก ก็ยากต่อไป 555)
มีเพื่อน มีสังคม, ให้เกียรติเพื่อน รวมพลังช่วยกันได้ครับ