16 พฤศจิกายน 2559

20 กันยายน 2559

Unity : 2D Game with Unity Part # 5




// โค้ดคำสั่ง Main_Controller.cs

using UnityEngine;
using System.Collections;

public class Man_Controller : MonoBehaviour {
public float speed;
float x, sx;
bool ks;
Animator am;
Rigidbody2D rb;

// Use this for initialization
void Start () {
am = GetComponent<Animator> ();
rb = GetComponent<Rigidbody2D> ();
sx = transform.localScale.x;
}

// Update is called once per frame
void Update () {
x = Input.GetAxis ("Horizontal");
am.SetFloat ("speed", Abs (x));


if (Input.GetButtonDown ("Jump")) {
am.SetBool ("jump", true);
rb.velocity = new Vector2 (rb.velocity.x, 5f);
}

rb.velocity = new Vector2 (x * speed, rb.velocity.y);

if (x > 0) {
transform.localScale = new Vector3 (sx, transform.localScale.y, transform.localScale.z);
}

if (x < 0) {
transform.localScale = new Vector3 (-sx, transform.localScale.y, transform.localScale.z);
}
}

void OnCollisionEnter2D(Collision2D coll) {
am.SetBool ("jump", false);
}
float Abs(float x) {
return x >= 0f ? x : -x;
}
}



// โค้ดคำสั่ง CameraFollow.cs
using UnityEngine;
using System.Collections;

public class CameraFollow : MonoBehaviour {
public Transform obj;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.position = new Vector3 (obj.position.x, transform.position.y, transform.position.z);
}
}

10 กันยายน 2559

Unity : 2D Game with Unity Part # 3



// โค้ดคำสั่งของ volt_controler.cs

using UnityEngine;
using System.Collections;

public class volt_controler : MonoBehaviour {
    public float jumpSpeed;
    Rigidbody2D rb;
    // Use this for initialization
    void Start () {
        rb = GetComponent ();
    }
   
    // Update is called once per frame
    void Update () {
        if (Input.GetButtonDown ("Jump")) {
            rb.velocity = new Vector2 (rb.velocity.x, jumpSpeed);
        }
    }
}

09 กันยายน 2559

Unity : 2D Game with Unity Part # 2




โค้ดคำสั่งของ  background.cs

using UnityEngine;
using System.Collections;

public class background : MonoBehaviour {

public float bgSpeed;
float bgPositionX;
float bg1PositionX;
// Use this for initialization

void Start () {
bgPositionX = transform.position.x;
bg1PositionX = GameObject.Find ("background_1").transform.position.x;
}

// Update is called once per frame
void Update () {
transform.position = new Vector3 (transform.position.x + bgSpeed, transform.position.y, transform.position.z);
if (transform.position.x < (bg1PositionX * -1f)) {
transform.position = new Vector3 (bg1PositionX, transform.position.y, transform.position.z);
}
}
}
โค้ดคำสั่งของ floor.cs

using UnityEngine;
using System.Collections;

public class floor : MonoBehaviour {
public float bgSpeed;
float bgPositionX;
float bg1PositionX;
// Use this for initialization
void Start () {
bgPositionX = transform.position.x;
bg1PositionX = GameObject.Find ("floor_1").transform.position.x;
}

// Update is called once per frame
void Update () {
transform.position = new Vector3 (transform.position.x + bgSpeed, transform.position.y, transform.position.z);
if (transform.position.x < (bg1PositionX * -1f)) {
transform.position = new Vector3 (bg1PositionX, transform.position.y, transform.position.z);
}
}
}

01 กันยายน 2559

Ubuntu : การติดตั้ง Software และการแก้ปัญหาต่างๆ บน Ubuntu

ติดตั้ง LAMPP (Apache, MariaDB and PHP)
ให้ทำการดาวน์โหลดโปรแกรมที่เว็บ
https://www.apachefriends.org/download.html
วิธีติดตั้ง
https://www.apachefriends.org/faq_linux.html

กำหนดให้ phpmyadmin สามารถเรียกได้จาก internet ภายนอก
ให้แก้ไขไฟล์ httpd-xampp.conf ซึ่งเก็บอยู่ที่ /opt/lampp/etc/extra โดยพิมพ์คำสั่ง
   sudo nano /opt/lampp/etc/extra/httpd-xampp.conf
จากนั้นแก้ไขตรงส่วนของ ตามตัวอย่างด้านล่าง

< Directory "/opt/lampp/phpmyadmin"   >

   AllowOverride AuthConfig Limit
    Order allow,deny
    Allow from all
    Require all granted
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
 
 <  Directory   > 
  
จากนั้นทำการ รีสตาร์ lampp ใหม่
    sudo /opt/lampp/lampp restart

    ให้ทดสอบเข้า  http://localhost/phpmyadmin
     *** หากเข้า phpmyadmin แล้วไม่ถาม user และ password แสดงว่ายังไม่ได้กำหนดรหัสผ่านที่ mySQL ให้กับ root ให้เข้าไปกำหนดใน phpmyadmin ในส่วนของ user accounts  กำหนดรหัสผ่านให้กับ root ทุกตัว
     จากนั้นเข้าไปแก้ไขไฟล์ config.inc.php ซึ่งเก็บอยู่ที่ /opt/lampp/phpmyadmin

     sudo nano /opt/lampp/phpmyadmin/config.inc.php

     ตรงส่วนของ Authentication type ให้ลบ ชื่อ user ออก และ password ออก ดังนี้

      /* Authentication type */
     $cfg['Servers'][$i]['auth_type'] = 'cookie';
     $cfg['Servers'][$i]['user'] = '';
     $cfg['Servers'][$i]['password'] = '';
     $cfg['Servers'][$i]['extension'] = 'mysqli';
     /* Server parameters */
     $cfg['Servers'][$i]['host'] = 'localhost';
     $cfg['Servers'][$i]['connect_type'] = 'tcp';
     $cfg['Servers'][$i]['compress'] = false;
     $cfg['Servers'][$i]['AllowNoPassword'] = false;


วิธีติดตั้ง เว็บไทย
http://www.amplysoft.com/knowledge/install-apache2-php5-mysql-phpmyadmin-ubuntu.html

การจัดการ Service
ก่อนอื่นเปิดสถานะไฟล์ให้เรียกใช้งานได้ ทำแค่ครั้งแรกครั้งเดียว
cd /opt/lampp
sudo chmod 755 manager-linux-x64.run    (manager-linux.run สำหรับ 32บิต)
เวลาเรียกใช้งานพิมพ์คำสั่ง
sudo /opt/lampp/manager-linux-x64.run

กรณีที่เปิดเครื่องมาแล้ว เซอร์วิสของ lampp ไม่สตาร์ท ให้แก้ไขโดยใช้คำสั่ง
    sudo ln -s /opt/lampp/lampp  /etc/init.d/lampp
    sudo update-rc.d lampp start 80 2 3 4 5 . stop 30 0 1 6 .

ติดตั้ง Flash Player
  sudo apt-get update
  sudo apt-get install flashplugin-installer

การกำหนด Virtual Host

  ให้ทำการเปิด Terminal (Ctrl + Alt + T)
  จากนั้น เข้าไปแก้ไขไฟล์ httpd.conf ที่เก็บอยู่ภายใต้ /opt/lampp/etc โดยพิมพ์คำสั่งเปิดไฟล์ดังนี้

        sudo nano /opt/lampp/etc/httpd.conf

        ให้นำเครื่องหมาย # ออกให้เหลือแต่คำสั่ง ดังนี้ 
        Include etc/extra/httpd-vhosts.conf

   จากนั้น เข้าไปแก้ไขไฟล์ httpd-vhosts.conf ที่เก็บอยู่ภายใต้ /opt/lampp/etc/extra
        sudo nano /opt/lampp/etc/extra/httpd-vhosts.conf

    หากต้องการกำหนดให้ virtual host ชื่อ myweb โดยเก็บไฟล์ไว้ที่ /opt/lampp/apps/myweb/htdocs ให้เพิ่มคำสั่งดังนี้
  
   < virtualhost >
       DocumentRoot "/opt/lampp/htdocs/"
       ServerName localhost
   &lt/ virtualhost >
   < virtualhost >
       DocumentRoot "/opt/lampp/apps/myweb/htdocs"
       ServerName myweb.localhost
   </ virtualhost >
 
ติดตั้ง SAMBA ทำ file sharing ดูที่
http://na5cent.blogspot.com/2012/04/samba-ubutntu-1110-server.html

https://help.ubuntu.com/community/How%20to%20Create%20a%20Network%20Share%20Via%20Samba%20Via%20CLI%20(Command-line%20interface/Linux%20Terminal)%20-%20Uncomplicated,%20Simple%20and%20Brief%20Way!

ติดตั้ง MonoDeveloper ทำให้ linux รัน asp.net c# ได้
sudo apt-get install monodevelop

ติดตั้ง xsp4  โดยเข้าไปดูวิธีติดตั้งได้ที่

https://zxtech.wordpress.com/2015/01/04/how-to-install-xsp4-onto-ubuntu/

จากนั้นเปิดโปรแกรม mono สร้าง project asp.net web form แล้วเขียนโปรแกรมตามต้องการ แล้ว run














หากต้องการใช้งาน vb.net ก็ติดตั้งโดยพิมพ์คำสั่ง

sudo apt-get install monodevelop mono-vbnc

การติดตั้ง SSH

sudo apt-get install openssh-server
.ให้ทำการตรวจสอบสถานะ ssh
sudo service ssh status

คำสั่งในการเปิดใช้งาน
sudo service ssh start
จากนั้นก็ติดต่อโดยใช้ putty จากเครื่องใดๆ ในเน็ทเวิร์ค

การติดตั่้ง OwnCloud
ให้เลือกติดตั้งตามรุ่นของ OS ที่ใช้ ตามลิงค์ด้านล่าง
https://download.owncloud.org/download/repositories/stable/owncloud/


ปัญหาเมื่อเปิดเครื่องแล้ว จอไม่ขึ้นอะไรเลย มีแต่ภาพพื้นหลัง
ให้เข้าโหมด เท็กซ์ โดยกดปุ่ม Ctrl + Alt + F1 จากนั้นก็ล็อกอิน เมื่อเข้าไปแล้ว มีวิแก้ 2 วิธี ลองดูถ้าวิธีแรกได้ก็ไม่ต้องทำวิธีที 2
วิธีแก้แบบที่ 1  (ลองแล้วไม่ได้ผล แต่เครื่องอื่นไม่รู้)
     sudo apt-get update
     sudo apt-get install --reinstall ubuntu-destop
     sudo apt-get install install unity
     sudo shutdown -r now

วิธีแก้แบบที่ 2 (ล้างค่าคอนฟิกของระบบ ซึ่งไม่มีอะไรก็แค่ไปกำหนดใหม่นิดหน่อย)
     sudo rm -rf ~/.config
     sudo reboot

** อ้างอิงจาก : https://itsfoss.com/how-to-fix-no-unity-no-launcher-no-dash-in-ubuntu-12-10-quick-tip/


... ไว้มาต่อ ... 
 

18 สิงหาคม 2559

Unity 3D - เขียนเกมด้วย Unity ตอนที่ 1

เขียนเกมด้วย Unity ตอนที่ 1
วีดิโอ สอนเขียนเกมด้วย Unity 3D ปูพื้นฐาน




เขียนเกมด้วย Unity ตอนที่ 2
ตรวจสอบการชนกันของวัตถุ
ใส่เอฟเฟ็กระเบิด



11 กรกฎาคม 2559

Raspberry Pi

การกำหนดค่าต่างๆ บน Raspberry Pi
- ติดตั้ง OS สำหรับ Raspberry Pi แบบไม่มีจอ LCD เลือกใช้ RASPBIAN JASSIE ตัวเต็ม ->  https://downloads.raspberrypi.org/raspbian_latest

- กรณีซื้อจอ LCD มาติดตั้งเพิ่ม ต้องดูว่าซื้อยี่ห้อ รุ่น ขนาดใด แล้วไปหาดาวน์โหลด OS หรือ Driver ให้ถูกรุ่น เช่น ซื้อจอ LCD ยี่ห้อ OSOYOO ก็ไปดาวน์ที่เว็บไซต์ผู้ผลิต -> http://osoyoo.com/2016/05/26/osoyoo-lcd-touch-screen-for-raspberry-pi-installation-guide/

- ไปดาวน์โหลดโปรแกรม Win32 Disk Imager เพื่อเอาไว้สร้าง disk image สำหรับ OS บน sd card -> https://sourceforge.net/projects/win32diskimager/

- ติดตั้งภาษาไทย กำหนดค่าต่างๆ -> http://dtv.mcot.net/data/up_show.php?id=1453644382&web=epost

- กำหนดให้เครื่องอื่นมองเห็น เปิดหน้าต่าง Terminal ที่ Raspberry แล้วพิมพ์
ssh หมายเลขไอพี เช่น ssh 192.168.1.132
จากนั้นจะมีให้ใส่รหัสผ่าน ถ้าไม่ได้เปลี่ยนรหัสผ่านก็ใช้ raspberry

- ifconfig คล้ายกับ ipconfig ใน windows pc

- ถ้าต้องการ Telnet จาก pc ไปยัง raspberry pi ก็ให้ไป d/l โปรแกรม Putty มาติดตั้ง -> http://software.thaiware.com/download.php?id=10912

- ติดตั้ง Apache, PHP , mySQL -> https://www.raspberrypi.org/learning/lamp-web-server-with-wordpress/worksheet/

- กำหนดให้ mySQL สามารถ Remote จากเครื่องอื่นได้
   เข้าไปแก้ไขไฟล์ my.cnf ->  sudo nano /etc/mysql/my.cnf
   ให้เพิ่มหมายเลขไอพีของเครื่องโดยเพิ่มคำสั่ง ( ตัวอย่างหมายเลขไอพี 192.168.1.132) 
                  bind-address  = 192.168.1.132
   จากนั้นให้ทำการ รีสตาร์ทเครื่อง raspberry pi ใหม่ หรือ สั่งรีสตาร์ทเซอร์วิส mysql ใหม่ด้วย
                  sudo service mysql restart    

   เปิด web browser เข้า  http://192.168.1.132/phpmyadmin
   ใส่ user : root  , password : รหัสผ่าน ของ mysql
                  แล้วป้อนคำสั่ง SQL เพื่อกำหนดสิทธิ ดังนี้
                  GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
            IDENTIFIED
BY 'ใส่รหัสผ่าน' 

           
WITH GRANT OPTION;

         FLUSH PRIVILEGES
;

      * หากต้องการให้สิทธิกับ user อื่น ก็แก้ไขตามต้องการ


- ติดตั้ง PhpMyAdmin -> https://www.stewright.me/2012/09/tutorial-install-phpmyadmin-on-your-raspberry-pi/

- ติดตั้ง ftp -> https://pimylifeup.com/raspberry-pi-ftp/

- ติดตั้ง samba สำหรับ share folder เพื่อให้ windows มองเห็น \\192.168.1.32\sharefolder
   -> http://www.htpcguides.com/create-samba-share-raspberry-pi/

- ติดตั้ง dosbox เพื่อจำลองให้ใช้งาน DOS ได้
    sudo apt-get install dosbox
   หลังจากติดตั้งเสร็จให้เรียกใช้งานได้พิมพ์
   dosbox
   เมื่อเข้าหน้าจอ dosbox แล้ว เราต้องไปทำการสร้างโฟลเดอร์ที่ต้องการภายใต้ Raspberry Pi เช่น สร้างไว้ภายใต้ /pi โดยตั้งชื่อ เช่น dos_c
   จากนั้น กลับมาที่หน้าต่าง dosbox ให้ทำการ mount  เพื่ออ้างอิงชื่อไดร์ฟ กับ โฟลเดอร์ โดยป้อนคำสั่ง
   mount c dos_c
   จากนั้นทดสอบโดยเปลี่ยน ไดรฟ์ เป็น c:
   ที่เหลือก็ลองนำโปรแกรม สมัยดอส มาใส่ไว้ในโฟลดเดอร์ dos_c ตัว dosbox ไดร์ฟ c ก็จะเห็นเอง
========================================


11 พฤษภาคม 2559

VB.Net : Export DataGridView to Excel

คำถามหากเรามีความจำเป็นต้องโอนข้อมูลที่แสดงผลบน VB.Net เข้าสู่ Excel จะทำอย่างไร
คำตอบ อยู่ที่นี่แล้ว
อิๆๆ สั้นๆ ได้ใจความ
1. ให้สร้างโปรเจกต์ขึ้นมาใหม่ จากนั้น ไปที่เมนู PROJECT เลือกรายการ Add Reference...

ที่หน้าต่าง Reference Manager ให้เลือก Extensions แล้วไปคลิกเลือก Microsoft.Office.Interop.Excel
















2. จากนั้น สร้าง DataGrideView ชื่อ DataGridView1  แล้วทำอย่างไรก็ได้ตามสะดวกเพื่อนำข้อมูลมาใส่ (อันนี้เขียนโปรแกรมเองน่ะครับ ไม่ขออธิบาย เดี๋ยวจะยาว)

3. ทำการเพิ่มปุ่ม Button สำหรับคลิกเพื่อให้ทำการ Export โดยตั้งชื่อเป็น Button1 ที่เหลือกำหนด Property เอาเอง ดังภาพ

















ดับเบิ้ลคลิกที่ปุ่ม แล้วทำการเขียนคำสั่ง ดังนี้

บรรทัดบนสุดก่อน Public Class ของฟอร์ม ให้ Imports ก่อน อย่าลืม โดยพิมพ์คำสั่ง

Imports Excel = Microsoft.Office.Interop.Excel

จากนั้น ที่ Sub Button1 ป้อนคำสั่ง ดังนี้

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim excelLocation As String = "d:\test.xlsx"
        Dim xlApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application()
        If xlApp Is Nothing Then
            MessageBox.Show("Excel is not Install.")
            Return
        End If

        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("sheet1")
        'Header Names
        Dim columnsCount As Integer = DataGridView1.Columns.Count
        For Each column In DataGridView1.Columns
            xlWorkSheet.Cells(1, column.Index + 1).Value = column.Name
        Next
        'Data
        For i As Integer = 0 To DataGridView1.Rows.Count - 1
            Dim columnIndex As Integer = 0
            Do Until columnIndex = columnsCount     
                xlWorkSheet.Cells(i + 2, columnIndex + 1).Value = DataGridView1.Item(columnIndex, i).Value
                columnIndex += 1
            Loop
        Next

        xlWorkBook.SaveAs(excelLocation)
        xlWorkBook.Close()
        xlApp.Quit()
        MessageBox.Show("Export to Excel Complete")
    End Sub


จากนั้นก็สั่งรันโปรแกรมทดสอบ ก็จะได้ไฟล์ชื่อ "d:\test.xlsx" อยู่ที่ไดร์ฟ D:
อยากเก็บไว้ที่ไหนไฟล์อะไรก็แก้เอาน่ะ

สวัสดี มีความสุขทุกวัน



28 เมษายน 2559

VFP : Display Base64 image

Base64 คือรูปแบบการเข้ารหัสวิธีหนึ่ง แต่ที่นิยมกันในปัจจุบันโดยการนำไปใช้เพื่อทำให้ข้อมูลที่เก็บอยู่ในรูปของไบนารี เช่น ภาพ JPG PNG หรือ Bitmap  กลายมาเป็นรูปแบบของตัวอักษร

นิยมนำไปใช้ภายใต้ HTML ตัวอย่างการใช้ ผ่านทางแท็ก img

<img src="data:image/jpg;base64,As10AAQSkZJRg........................Ed0/E//9k=" />

ถ้าหากต้องการเข้ารหัสภาพทางเว็บบราวเซอร์ สามารถเข้าไปที่เว็บ

https://www.base64-image.de/


สำหรับบทความนี้จะนำเสนอวิธีการใช้ด้วยโปรแกรม Visual FoxPro ดังนี้

การเข้ารหัสรูปแบบของภาพไปเป็น Base64

lcPictureFile = GETPICT( "jpg" )
lcPictBase64  = STRCONV( FILETOSTR( lcPictureFile ) , 13 )

การแปลงข้อมูล Base64 กลับไปเป็นแฟ้มภาพ

=STRTOFILE(STRCONV( lcPictBase64 , 14) , lcPictureFile)

การนำข้อมูล Base64 แสดงภายใต้คอนโทรล Image 

Thisform.Image1.PictureVal = STRCONV( lcPictBase64 , 14)

การนำเอาข้อมูล Base64 ไปออกรายงาน

ข้อมูล Base64 เป็นข้อมูลตัวอักษรธรรมดา ซึ่งเราสามารถนำไปบันทึกลงในฟิลด์ได้ทันที โดยเก็บไว้ในฟิลด์ประเภท memo หากต้องการนำข้อมูลมาแสดงผลเป็นรูปภาพในรายงาน สามารถทำได้หลายวิธีดังนี้

* สมมุติขอมูล Base64 ถูกเก็บไว้ที่ตาราง TableBase ภายใต้ฟิลด์ชื่อ Pict

วิธีที่ 1 

1. สร้างรายงาน CREATE REPORT myReport
2. ทำการสร้างตัวแปร โดยคลิกที่เมนู Report -> Variables...
    ที่แท็ป Variables ให้กำหนด
          Value to store:  BlobImage
          Initial value: CREATEOBJECT("Image")
















3  นำคอนโทรล Picture/OLE มาใส่ในรายงาน
    double click จะเข้าสู่หน้าต่าง Picture/OLE Bound Properties
         ที่ แท็ป General คลิกเลือก Expression or variable name
         จากนั้นป้อนตัวแปรที่ช่อง Control source: BlobImage
         คลิกปุ่ม OK













4. double click ที่ Detail จะเข้าสู่หน้าต่าง Detail Band Properties
    คลิกที่แท็บ General
       ทีช่อง On entry: ใส่คำสั่ง
         
              EXECSCRIPT("Blobimage.PictureVal=STRCONV(TableBase.Pict , 14)")

              *** TableBase.Pict คือชื่อตารางและฟิลด์ที่เก็บข้อมูล Base64




















ทำการบันทึกรายงาน เป็นอันเสร็จเรียบร้อย


วิธีที่ 2

1. สร้างรายงาน จากนั้นนำคอนโทรล Picture/OLE มาใส่
    double click กำหนดค่าในแท็บ General โดยคลิกเลือก Expression or variable name
    ที่ช่อง Control Source:  loRL.oBlobImage
    
    ** loRL คือชื่อ object  และ oBlobImage คือชื่อ property
















2.  ทำการเขียนคำสั่ง เพื่อแสดงภาพในรายงาน ดังนี้

USE TableBase    && ตารางที่มีข้อมูล Base64

SET REPORTBEHAVIOR 90

loRL = NEWOBJECT( 'PreviewListener' )
loRL.InitBLOBImage( )  
loRL.LISTENERTYPE = 1  && Preview

REPORT FORM ชื่อรายงาน OBJECT loRL      

RETURN

DEFINE CLASS PreviewListener AS REPORTLISTENER
oBlobImage = NULL

PROCEDURE InitBLOBImage(lpcBlobField AS STRING)
THIS.oBlobImage = NEWOBJECT( 'IMAGE' )
THIS.oBlobImage.PICTUREVAL = STRCONV(Tablebase.pict , 14)
ENDPROC

PROCEDURE BEFOREBAND( nBandObjCode, nFRXRecNo )
IF nBandObjCode = 4 && Detail band
THIS.oBlobImage.PICTUREVAL = STRCONV(Tablebase.pict , 14)
ENDIF
ENDPROC
ENDDEFINE


เสร็จสำหรับการจัดการแสดงผลภาพจาก Base64 ในรายงาน


สำหรับการนำเสนอวิธีการจัดการกับการเข้ารหัสด้วย Base64 ก็จบเพียงเท่านี้

สวัสดี ปีที่มีอากาศร้อนที่สุดๆๆๆๆ

22 เมษายน 2559

ActiveVFP สร้างสรรค์เว็บด้วย VFP

ActiveVFP เป็นภาษาคลิปต์ที่ออกแบบมาสำหรับนักพัฒนาเว็บ โดยอาศัยพื้นฐานภาษา Visual FoxPro ในการพัฒนา (เหมือนกับการพัฒนาเว็บด้วยภาษา PHP, ASP) ActiveVFP ถูกสร้างขึ้นมาเป็นลักษณะของซอฟต์แวร์โอเพ่นซอรส์ เพื่อให้นักพัฒนาที่มีความถนัดในการเขียนโปรแกรม VFP สามารถนำไปใช้งานและต่อยอดความสามารถต่างๆ ได้อย่างสะดวกและรวดเร็ย โดยไม่จำเป็นต้องเรียนรู้ภาษาใหม่

จะหาโปรแกรม ActiveVFP ได้จากที่ไหน ?
สามารถดาวน์โหลดโปรแกรมได้ที่ http://activevfp.codeplex.com/

เตรียมการก่อนติดตั้งโปรแกรม ActiveVFP

การใช้งาน ActiveVFP จำเป็นต้องติดตั้ง IIS ก่อน เพื่อจำลองเครื่องคอมพิวเตอร์ของเราให้เป็น Web Server ดังนี้
1. คลิกที่เมนู Start ของ Windows เพื่อเปิด Control Panel -> Programs -> Programs and Features จะเข้าสู่หน้าต่าง Unstall or change a program ให้คลิกเลือก Turn Windows features on or off















2. ที่หน้าต่าง Windows Features ให้เลือกติดตั้ง Insternet Information Service และเลือก รายการ Application Development Features ตามต้องการ ดังภาพตัวอย่าง

























คลิกปุ่ม OK
ระบบจะทำการติดตั้ง IIS จนแล้วเสร็จ

3. ทำการทดสอบว่าสามารถใช้งาน IIS ได้หรือยัง โดยเปิดโปรแกรมเว็บบราวเซอร์ แล้วพิมพ์ url
http://localhost
หากติดตั้งสำเร็จ จะขึ้นเว็บ ดังภาพ (ขึ้นอยู่กับรุ่นของ IIS)

















วิธีการติดตั้งโปรแกรม ActiveVFP

1. ให้เรียกไฟล์ติดตั้งที่ทำการดาวน์โหลดมา (ActiveVFP603,exe) ขณะที่โปรแกรมทำการติดตั้งจะปรากฏหน้าจอให้กำหนดไดเรคทอรีสำหรับเว็บไซต์
ให้กำหนดชื่อตามต้องการ ดังภาพ










หลังจากทำการตั้งชื่อแล้วกดปุ่ม Enter โปรแกรมจะทำการติดตั้งไฟล์ต่างๆ ลงในไดเรคทอรีที่กำหนด จากนั้น โปรแกรมจะให้เรากำหนดชื่อของ Virtual Directory Name ให้กำหนดชื่อตามต้องการ ดังภาพ










เมื่อกำหนดชื่อเรียบร้อยให้กดปุ่ม Enter โปรแกรมจะทำการเพิ่ม Web Site ที่เรากำหนดให้กับ IIS
เมื่อติดตั้งเรียบร้อย กด Enter แล้วจะปรากฎหน้าต่างเว็บบราวเซอร์ แสดงรายละเอียดของ ActiveVFP ดังภาพ



















เสร็จสิ้นสำหรับการติดตั้ง ActiveVFP

การปรับแต่ง ActiveVFP ให้สนับสนุนภาษาไทย และภาษาอื่นๆ 

1. ให้ทำการเปิดโฟลเดอร์ที่ทำการติดตั้ง ActiveVFP  จากนั้นเข้าไปที่โฟลเดอร์ย่อย ชื่อ prg ดังภาพ


















ทำการเปิดโปรแกรม VisualFoxPro แล้วเข้าไปแก้ไขโปรแกรม .prg ที่อยู่ในโฟล์เดอร์เหล่านี้ โดยทำการค้นหา คำสั่ง
 
oHTML.mergescript(lcHTMLout)

เมื่อพบแล้ว ให้เพิ่มคำสั่ง

 lcHTMLout=STRCONV(lcHTMLout,11)           && for support thai language

โดยนำคำสั่งข้างต้นไว้ก่อนหน้าบรรทัดที่ค้นหาพบ ดังภาพ
















ให้ค้นหาทุกไฟล์ .prg และเพิ่มตามตัวอย่าง ก็จะทำให้การแสดงผลและการใช้ภาษาไทยบนหน้าเว็บเป็นไปอย่างถูกต้อง

การกำหนดให้สามารถพิมพ์รายงานของ VisualFoxPro

ขั้นตอนนี้เป็นการกำหนดให้ ActiveVFP สามารถเรียกใช้รายงานของ VisualFoxPro (.frx) ที่ได้ทำการสร้างไว้
1. ให้ทำการดาวน์โหลโปรแกรม Ghostscript จากเว็บไซต์

http://ghostscript.com/download/gsdnld.html

แล้วทำการติดตั้งลงในคอมพิวเตอร์

2. ทำการเปิด Windows Command Prompt ในโหมด Run As Administrator

























3. ไปที่โฟล์เดอร์ที่เราได้ติดตั้ง ActiveVFP แล้วเข้าไปที่โฟลเดอร์ reports ทำการ Register ไฟล์  PDFRun.exe โดยอ้างโฟลเดอร์แบบเต็ม ตามตัวอย่างดังภาพ









4. ทำการกำหนดสิทธิ์ให้กับ PDFrun.Print2PDF  โดยการเรียกใช้คำสั่ง mmc comexp.msc /32 ในโหมด Run as Administrator (สำหรับ Windows 7 หรือรุ่นที่สูงกว่า) หรือ DCOMCNFG (สำหรับรุ่นที่ต่ำกว่า Windows 7)


















5. ที่หน้าต่าง Component Serveice ให้เข้าไปกำหนดสิทธิให้กับรายการ PDFrun.Print2PDF
โดยให้สิทธิกับผู้ใช้
IIS_IUSRS
IUSR





































เป็นอันเสร็จเรียบร้อย

5. ให้ทำการเพิ่มเครื่องพิมพ์ให้กับ Windows โดยทำการเพิ่มเครื่องพิม์
Xerox Phaser 6120 PS  (สำหรับ Windows7 หรือสูงกว่า)
Xerox Phaser 1235 PS  (สำหรับ Windows Vista)
Apple Color LW 12/660 PS (สำหรับ Windows 2003 Server)

สำหรับบทความนี้ก็ขอจบเพียงเท่านี้

สวัสดีมีเว็บใช้งาน




31 ธันวาคม 2558

SQL Server - การ Export SQL Server Data โดยใช้ Generate Scripts

การนำข้อมูลจาก SQL Server มีหลายวิธี เช่น การสำรองข้อมูล (backup) หรือ การก๊อปปี้ไฟล์ฐานข้อมูลโดยการ  Detach ออกก่อน ซึ่งวิธีเหล่านี้เราจะไม่สามารถเห็นคำสั่งหรือข้อมูลของฐานข้อมูล แต่ยังมีอีกวิธีการหนึ่งที่ทำให้เราสามารถ เห็นคำสั่งตั้งแต่เริ่มสร้างฐานข้อมูล ตาราง รวมถึงคำสั่งในการเพิ่มข้อมูลและข้อมูลต่างๆในตารางของฐานข้อมูลที่ต้องการได้

1. ให้คลิกเมาส์ปุ่มขวาที่ฐานข้อมูลที่ต้องการ Export
         เลือก Task -> Generate Scripts...


















2. จะปรากฎหน้าต่าง Generate and Publish Script - Introduction ให้คลิกปุ่ม Next






















3. หน้าต่าง Generate and Publish Script - Choose Objects เป็นส่วนที่ให้กำหนดว่าจะเลือกการ Export แบบใด
         - Script entire database and all database objects เป็นการเลือกสิ่งที่อยู่ภายใต้ฐานข้อมูลทั้งหมด
         - Select specific database objects เป็นการเลือกเฉพาะตารางที่ต้องการ

จากนั้นคลิกปุ่ม Next



    










4. หน้าต่าง Generate and Publish Script - Set Scripting Options 

- เลือก Save scripts to a specific location 

- เลือก Save to file 
            ที่ช่อง File name ให้กำหนดชื่อไฟล์และโฟลเดอร์ที่บันทึกรายละเอียดของ scripts

จากนั้นคลิกที่ปุ่ม Advanced


















5. เมื่อคลิกปุ่ม Advanced จะปรากฎหน้าต่าง Advanced Scripting Options 
          ไปที่รายการ  Type of data to script  แล้วกำหนดค่าตามต้องการ

                - Data only  เป็นการ Export เฉพาะข้อมูล
                - Schema and data  เป็นการ Export โครงสร้างและข้อมูล
                - Schema only  เป็นการ Export เฉพาะโครงสร้าง





















คลิกปุ่ม OK 
จะกลับมายังหน้าต่าง Generate and Publish Script - Set Scripting Options  ให้คลิกปุ่ม Next

6. หน้าต่าง Generate and Publish Script - Summary ให้คลิกปุ่ม Next















โปรแกรมก็จะทำการ Generate Scripts ให้จนเสร็จ ก็กดปุ่ม Finish ก็จะได้ไฟล์สคริปต์ตามที่ต้องการ สามารถนำไปใช้งานต่อได้

ตัวอย่างข้อมูลในไฟล์สคริปต์ ที่ Generate โดยเปิดผ่านทางหน้าต่าง New Query















สวัสดีวันส่งท้ายปีเก่า 31 ธันวาคม 2558
อย่าลืมไปดูไฟผู้ว่า ณ ลานคนเมือง 39 ล้านบาท

สวัสดีมีโชค


  

24 ธันวาคม 2558

ASP.NET dynamic HighCharts with SQL Server

การแสดงผลด้วยกราฟ ด้วย HighCharts

1. สร้างตารางเก็บข้อมูล ภายใต้ SQL Server ดังนี้

USE yourDatabase 
GO
CREATE TABLE [dbo].[tblTicker](
[RowOrder] [int] IDENTITY(1,1) NOT NULL,
[year] [nchar](4) NULL,
[Symbol] [nvarchar](15) NULL,
[Value1] [numeric](12, 2) NULL,
[value2] [numeric](12, 2) NULL
) ON [PRIMARY]

GO 

2. ทำการเพิ่มข้อมูลให้กับตาราง ตามตัวอย่างดังภาพ














3. ให้เปิดโปรแกรม Visual Studio 201x จากนั้นทำการสร้างเว็บฟอร์ม

- ไฟล์นามสกุล .aspx ป้อนคำสั่งดังนี้

<!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
 <title></title>
 <meta charset= "utf-8" />
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
 <script src="https://code.highcharts.com/highcharts.js"></script>
 <script src="https://code.highcharts.com/modules/data.js"></script>
 <script src="https://code.highcharts.com/modules/exporting.js"></script>
 <script type="text/javascript">
 if ('<%=hidXCategories1%>' == '') {
 execScript();
 }
 var firstSeries = '<%=hidValues1%>';
 var secondSeries = '<%=hidValues2%>';
 var xAxis = '<%=hidXCategories1%>';
 var categories = new Array();
 categories = xAxis.split(',');
 var seriesOne = new Array();
 seriesOne = firstSeries.split(',');
 for (var i = 0; i < seriesOne.length; i++) {
 seriesOne[i] = parseInt(seriesOne[i]);
 }
 var seriesTwo = new Array();
 seriesTwo = secondSeries.split(',');
 for (var i = 0; i < seriesTwo.length; i++) {
 seriesTwo[i] = parseInt(seriesTwo[i]);
 }
 $(document).ready(function () {
 chart = new Highcharts.Chart({
 chart: {
 renderTo: 'container',
 defaultSeriesType: 'line'
 },
 title: {
 text: 'ทดสอบ Line Chat'
 },
 xAxis: {
 categories: categories
 },
 yAxis: {
 title: {
 text: 'แกน Y'
 }
 },
 series: [
 { name: 'ข้อมูลที่ 1', data: seriesOne },
 { name: 'ข้อมูลที่ 2', data: seriesTwo }
 ]
 });
 });
 </script>
 </head>
 <body>
 <form id="form1" runat="server">
 <h4>Display line chart using Highcharts in Asp.net</h4>
 <asp:DropDownList ID="DropDownList1" runat="server">
 <asp:ListItem>2014</asp:ListItem>
 <asp:ListItem>2015</asp:ListItem>
<asp:ListItem>2016</asp:ListItem>
 <asp:ListItem>2017</asp:ListItem>
</asp:DropDownList>
 <asp:Button ID="Button1" runat="server" Text="Button" /&gt
 <br />
 <div>
 <div id="container" style="width: 500px; height: 500px"></div>
 </div>
 </form>
 </body>
 </html>



- ไฟล์นามสกุล .aspx.vb ป้อนคำสั่งดังนี้

Imports System.Data
Imports System.Data.SqlClient
Public Class highcharts
    Inherits System.Web.UI.Page
    Private dsSeries As New DataSet()
    Public hidValues1 As String
    Public hidValues2 As String
    Public hidXCategories1 As String
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Public Function BindData() As DataSet
        Dim connString As String = ConfigurationManager.ConnectionStrings("SQLConnect").ToString()
        Dim con As New SqlConnection(connString)
        Dim cmd As New SqlCommand()
        cmd.Connection = con
        cmd.CommandText = "SELECT symbol,value1,value2 FROM tblTicker WHERE year ='" & DropDownList1.SelectedValue & "'"
        Dim da As New SqlDataAdapter(cmd)
        Try
            Dim ds As New DataSet()
            da.Fill(ds)

            Return ds
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim ri As Integer = 0
        'If Not IsPostBack Then
        dsSeries = BindData()
        'End If
        If dsSeries Is Nothing Then
            Return
        End If
        For Each dr As DataRow In dsSeries.Tables(0).Rows
            hidXCategories1 = (hidXCategories1 & dr("symbol").ToString()) + ","
            hidValues1 = (hidValues1 & dr("value1").ToString()) + ","
            hidValues2 = (hidValues2 & dr("value2").ToString()) + ","
            ri += 1
        Next
        If ri > 0 Then
            hidXCategories1 = Left(hidXCategories1, hidXCategories1.Length - 1)
            hidValues1 = Left(hidValues1, hidValues1.Length - 1)
            hidValues2 = Left(hidValues2, hidValues2.Length - 1)
        End If
    End Sub
End Class

- ไฟล์ web.config

 <configuration> 
 <system.web> 
 <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" /> 
 <httpRuntime targetFramework="4.5" /> 
 </system.web> 
 <connectionStrings> 
 <add name="SQLConnect" connectionString="server=ชื่อServer;database=ชื่อDatabase;uid=sa;password=1234;" /> 
 </connectionStrings> 
 </configuration>

ให้ทำการกำหนด ชื่้อ Server, ชื่อ Database , ชื่อ User และรหัสผ่าน ให้ตรงกับที่กำหนดใน SQL Server

ตัวอย่างผลลัพธ์

























สวัสดีมีกราฟใช้งาน


12 สิงหาคม 2558

Configuring IIS, ASP.NET, and SQL Server

เมื่อเราสร้างเว็บแล้วทำการ config web ผ่าน IIS แล้วเกิด Error

Server Error in '/' Application.


Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not load type....


เราต้องมาแก้ปัญหาที่ IIS โดยเข้าไปกำหนดค่า Configuration ภาย้ใน IIS ดังนี้

การกำหนดค่า Configuring IIS, ASP.NET, and SQL Server

อ้างอิงจากเว็บ
http://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server

การกำหนดสิทธิให้กับ domain ย่อยๆ ให้ทำดังนี้

ไปที่ IIS เข้าไปที่ Default Web Site
ไปคลิกขวาที่ Floder ของเรา แล้วเลือกรายการ Convert to Application




จะปรากฎหน้าต่าง Add Application ให้คลิกปุ่ม OK




















ขั้นต่อมา

ที่ SQL Server Management Studio ให้ไปกำหนดสิทธิ์
โดยคลิกขวาที่ ชื่อฐานข้อมูล เลือก Properties
เลือก Permissions คลิกปุ่ม Search
ที่หน้าต่าง Select Users or Roles กำหนด NT AUTHORITY\SYSTEM
ไปกำหนดสิทธ์ (Grant) ในส่วนของ Connect ให้ติ๊กเครื่องหมายถูกที่ช่อง Grant


เสร็จเรียบร้อย โรงเรียน IIS

สวัสดีมีเว็บใช้

04 สิงหาคม 2558

การสร้าง VFP COM Object

พอดีเพื่อนๆ ที่ได้เขียนโปรแกรม VFP มีการนำเสนอ โปรเจกต์ พิมพ์รายงานของ VFP ผ่านทาง ASP และ ASP.net เลยทำให้อยากทำบ้าง ดังนั้นก็เป็นที่มาของวิธีการสร้าง VFP COM Object ขึ้นมาเพื่อจะได้ทำให้ VFP โลดแล่นอยู่บนเว็บบ้าง

การสร้าง VFP COM Object
1. เปิดโปรแกรม VFP (ตอนเปิดให้คลิกเมาส์ปุ่มขวา แล้วเลือก Run as Administrator) จากนั้นพิมพ์คำสั่งที่ Command Window
      MODIFY COMMAND myclass.prg

2. ทำการป้อนคำสั่งดังนี้
** คำสั่งได้มาจากเว็บ -> http://www.tek-tips.com/faqs.cfm?fid=3381

DEFINE CLASS myclass AS session OLEPUBLIC

PROCEDURE MyDoCmd(cCmd as String) as Variant ;
helpstring "Execute a VFP cmd"
&cCmd && just execute parm as if it were a fox command

FUNCTION MyEval(cExpr as String) ;
helpstring "Evaluate a VFP expression"
RETURN &cExpr && evaluate parm as if it were a fox expr

FUNCTION Error(nError, cMethod, nLine)
COMreturnerror(cMethod+' err#='+str(nError,5)+;
' line='+str(nline,6)+' '+message(),_VFP.ServerName)
&& this line is never executed

ENDDEFINE


ทำการบันทึก โดยกดปุ่ม Ctrl + W

3. ทำการ build dll เพื่อสร้าง .dll โดยพิมพ์คำสั่งที่ Command Window

BUILD PROJECT myserver FROM myclass

BUILD DLL myserver from myserver recomp

หากไม่เกิดข้อผิดพลาดใดๆ เป็นอันเสร็จ ก็จะได้ไฟล์ชื่อ myserver.dll เรียบร้อย
ทำการทดสอบว่า ไฟล์ dll และคำสั่งที่สร้างขึ้น ใช้ได้หรือไม่ โดยพิมพ์คำสั่งที่ Command Window

ox = CREATEOBJECT("myserver.myclass")

?ox.myeval("DATE()")


หากขึ้นวันที่บนหน้าจอแสดงว่า สำเร็จเรียบร้อย
ก็สามารถนำเอา myserver.dll ไปใช้ได้

สำหรับการเรียกใช้ใน asp.net ก็ให้ไปที่เมนู PROJECT เลือกรายการ Add Reference
จะเข้าสู่หน้าต่าง Reference Manage ให้คลิกเลือกที่ COM -> Type Libraries แล้วหาไฟล์ myserver.dll ที่เราสร้างขึ้น แล้วคลิกเลือก

ส่วนการเขียนคำสั่ง ใน ASP.Net เช่น ที่ Form -> Load

Dim oVFP As New myserver.myclass
Dim nRecno As Integer
Response.Write(oVFP.MyEval("time()"))

oVFP.MyDoCmd("USE c:\customer")

While oVFP.MyEval("!EOF()")
    nRecno = nRecno + 1
    Response.Write(nRecno)
    Response.Write(oVFP.MyEval("code"))
    Response.Write(oVFP.MyEval("name"))

    oVFP.MyDoCmd("SKIP")

End While

oVFP.MyDoCmd("USE IN customer")


สำหรับคำสั่งต่างๆ ที่เหลือก็ทดสอบดู หรือนำไปประยุกต์ตามต้องการ

หากต้องการนำไฟล์ myserver.dll ไปใช้งานกับเครื่องที่ไม่ได้ติดตั้งโปรแกรม Visual FoxPro ต้องทำการติดตั้้ง Runtime ของ Visual FoxPro ไปแทน


สวัสดี   /:-{)

29 พฤษภาคม 2558

SQL Server - OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".

การ Query ข้อมูลจากตาราง Excel ด้วย SQL Server ด้วยคำสั่ง

SELECT * FROM 
OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                            'Excel 12.0;Database=D:\YourExcelFile.xlsx;
                             User=Admin;Password=;HDR=Yes;IMEX=1', 
                             'SELECT * FROM [Sheet1$]');

แล้วเกิด Error เช่น

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)"
returned message "Unspecified error"

ก่อนอื่นก็ต้องไปดูที่ โปรแกรม  Microsoft SQL Server Manage Studio

เปิดหน้าต่าง New Query... แล้วพิมพ์คำสั่ง

exec sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE
exec sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE WITH OVERRIDE

กดปุ่ม F5
จากนั้น ที่หน้าต่าง Object Explorer ดูตรง Linked Servers ว่าเรามี Provider ชื่อ Microsoft.ACE.OLEDB.12.0 อยู่แล้ว ดังภาพ  



















จากนั้นคลิกเมาส์ปุ่มขวา เลือก Properties จากนั้นให้คลิกเลือกที่
Dynamic parameter และ Allow  inprocess แล้วคลิกปุ่ม OK














จากนั้นไปทำการสำรวจ folder ที่เป็นพื้นที่เก็บข้อมูลชั่วคราวหรือ Temp file ซึ่งก็จะอยู่ภายใต้ Folder ชื่อ C:\User\ชื่อผู้ใช้\AppData\Local (ไฟล์จะถูกซ่อนอยู่ แต่ละเครื่องอาจจะอยู่คนละที่กัน ลอง Search หาดู)

จากนั้นคลิกเมาส์ปุ่มขวาที่ folder ชื่อ Temp เลือก Properties 
แล้วเอา Attribute ตรง Read-Only ออก
 






















และทำเช่นเดียวกันกับ โฟลดเดอร์ Temp ที่อยู่ใน
C:\Windows\ServiceProfiles\LocalService\AppData\Local



เท่านี้ก็ทำให้เราสามารถแก้ไขปัญหา Error ที่เกิดขึ้นกับการเปิดไฟล์ Excel จากภายนอกได้แล้ว

สวัสดี มีความสุข 

28 มีนาคม 2558

ASP.NET connect to a DBF file

การเชื่อมต่อกับไฟล์ dbf ด้วย ASP.NET

ก่อนอื่นให้ทำการ Download File VFPOleDB จากนั้นทำการติดตั้ง โปรแกรม (VFPOLEDBSetup.msi)

1. เปิดโปรแกรม Visual Studo 20xx  เลือก New Project....
2. คลิกที่รายการ Web -> ASP.NET Empty Web Application แล้วตั้งชื่อที่ช่อง Name: WebForm1
3. ทำการ Add -> New Item... -> Web Form ขึ้นมา

4. ไปที่เมนู PROJECT หรือ WEBSITE เลือกรายการ Add Refrence...
5. ที่หน้าต่าง Reference Manager ให้เลือกที่รายการ COM -> Type Libraries
     ติ๊กเลือก Microsoft OLE DB Provider for Visual FoxPro 7.0 Type Library ตามภาพ แล้วคลิก OK














6. ทำการเขียนคำสั่ง ในส่วนของ Web Form เช่น
ต้องการเรียกดูข้อมูลจากตาราง D:\CSS\Data\GROUP.dbf
ส่วนคำสั่ง SQL ทำการ Select ข้อมูล เฉพาะที่กำหนด 
เขียนคำสั่ง ดังนี้ (ปรับเปลี่ยนตามข้อมูลของแต่ละท่าน)

Imports System.Data

Partial Class WebForm1
    Inherits System.Web.UI.Page
    Dim DataDBF As String = "D:\CSS\Data\"
    Dim ConnectionString As String = String.Empty, sCommand As String = String.Empty
    Dim dBaseConnection As OleDb.OleDbConnection = Nothing, dBaseCommand As OleDb.OleDbCommand = Nothing
    Dim retVal As Integer = 0
    Dim reader As OleDb.OleDbDataReader
    Dim cSearch As String
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        Try

            'if use visual fox pro Connect to a single DBF-file
            ConnectionString = "Provider=vfpoledb;Data Source=" & IO.Path.GetDirectoryName(DataDBF) & ";Collating Sequence=machine;"
            dBaseConnection = New OleDb.OleDbConnection(ConnectionString)
            dBaseConnection.Open()
            cSearch = "อ"      ' ค้นหาตัวอักษร อ
            sCommand = "Select gr_code,gr_desc from group.dbf where gr_desc like '%" & cSearch & "%' "
            dBaseCommand = New OleDb.OleDbCommand(sCommand, dBaseConnection)
            'myDA = New OleDbDataAdapter(comm)
            'dBaseCommand = New OleDb.OleDbCommand(sCommand, dBaseConnection)
            retVal = dBaseCommand.ExecuteNonQuery()
            reader = dBaseCommand.ExecuteReader()
            While reader.Read()
                Response.Write(reader("gr_code").ToString & " ")
                ' second column
                Response.Write(reader("gr_desc").ToString & " ")
                'intCount = intCount + 1
            End While
            dBaseConnection.Close()
        Catch ex As OleDb.OleDbException
            Response.Write(ex.Message)
        End Try
    End Sub
End Class

ทำการบันทึกแล้วเรียกดู จะปรากฏข้อมูล ดังภาพ

















จากตัวอย่างข้างต้นเป็นตัวอย่างการใช้ออปเจ็กต์ Reader เพื่ออ่านเรคคอร์ดทีละรายการเพื่อทำการแสดงโดยผ่านคำสั่ง HTML ภายใต้ Response.Write

สำหรับตัวอย่างต่อไปนี้ จะเป็นการแสดงข้อมูลผ่านทาง GridView
ให้ทำการลาก GridView มาไว้ที่เว็บฟอร์ม ดังภาพ


ตั้งชื่อ GridView -> GridView1









จากนั้น ก็ดัดแปลงคำสั่งใหม่ดังนี้

Imports System.Data

Partial Class WebForm1
    Inherits System.Web.UI.Page

    Dim DataDBF As String = "D:\CSS\Data\"
    Dim ConnectionString As String = String.Empty, sCommand As String = String.Empty
    Dim dBaseConnection As OleDb.OleDbConnection = Nothing, dBaseCommand As OleDb.OleDbCommand = Nothing

    Dim cSearch As String

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load

        Try
            'if use visual fox pro Connect to a single DBF-file
            ConnectionString = "Provider=vfpoledb;Data Source=" & IO.Path.GetDirectoryName(DataDBF) & ";Collating Sequence=machine;"
            dBaseConnection = New OleDb.OleDbConnection(ConnectionString)
            dBaseConnection.Open()
            cSearch = "อ"      ' ค้นหาตัวอักษร อ
            sCommand = "Select gr_code,gr_desc from group.dbf where gr_desc like '%" & cSearch & "%' "
            dBaseCommand = New OleDb.OleDbCommand(sCommand, dBaseConnection)

            '
            Dim dt As DataTable = GetData(dBaseCommand)
            GridView1.DataSource = dt
            GridView1.DataBind()
            '
            dBaseConnection.Close()
        Catch ex As OleDb.OleDbException
            Response.Write(ex.Message)
        End Try
    End Sub


    Private Function GetData(ByVal cmd As OleDb.OleDbCommand) As DataTable
        Dim dt As New DataTable()
        Dim sda As New OleDb.OleDbDataAdapter()
        cmd.CommandType = CommandType.Text
        cmd.Connection = dBaseConnection
        sda.SelectCommand = cmd
        sda.Fill(dt)
        sda.Dispose()
        Return dt
    End Function
End Class

หลังจากนั้น ก็ทำการบันทึก แล้วเรียกโปรแกรมดู

จะปรากฎข้อมูลดังตัวอย่าง




















สวัสดี มีสุข



"What you will become after reading this article ?"

Copyright(c) 2007 - 2016 by Kasem Kamolchaipisit.