กระทู้เก่าบอร์ด อ.Yeadram
        
           1,905   5		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        เพิ่มฟิลด์ในฐานข้อมูลของเครื่องเซิฟเวอร์      
    
      หากเราต้องการเพิ่มฟิลด์อีก2ฟิลด์
ในฐานข้อมูลของเครื่องเซิฟเวอร์
เช่น ข้อมูล Custom มีชื่อ ที่อยู่
หากเราต้องการเพิ่มอีก 2 ฟิลด์
ยอดซื้อ กับ ยอดจ่ายเงิน
เป็น number แบบมีทศนิยม
ิ
เพิ่ม ฟิลด์ buy เป็น number แบบ มีทศนิยม
เพิ่ม ฟิล์ด pay เป็น number แบบ มีทศนิยม
เราต้องเขียนคำสั่่งบนฟอร์มอย่างไร
เพื่อให้ผู้ใช้ ไปดำเนินการเองที่เครื่องลูก
ไม่ต้องไปแก้ที่เครื่อง เซิฟเวอร์
    
  ในฐานข้อมูลของเครื่องเซิฟเวอร์
เช่น ข้อมูล Custom มีชื่อ ที่อยู่
หากเราต้องการเพิ่มอีก 2 ฟิลด์
ยอดซื้อ กับ ยอดจ่ายเงิน
เป็น number แบบมีทศนิยม
ิ
เพิ่ม ฟิลด์ buy เป็น number แบบ มีทศนิยม
เพิ่ม ฟิล์ด pay เป็น number แบบ มีทศนิยม
เราต้องเขียนคำสั่่งบนฟอร์มอย่างไร
เพื่อให้ผู้ใช้ ไปดำเนินการเองที่เครื่องลูก
ไม่ต้องไปแก้ที่เครื่อง เซิฟเวอร์
				5 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R15185    
        
  
      ขอบคุณมากเลยครับ
พยามยามหาควาุ้มรู้อยู่
่ไม่เคยเรียนมาก่อน
ใช้ตัดแปะเอาครับ
    
    
  พยามยามหาควาุ้มรู้อยู่
่ไม่เคยเรียนมาก่อน
ใช้ตัดแปะเอาครับ
        
    3 @R15190    
        
  
      ทดลองแล้วไม่ได้ครับ
มันขึ้นข้อความว่า
compileerror:
use r-defined type not defined
คืออย่างนี้ครับ ผมอาจเล่าไม่เคลีย
เอาใหม่
เครื่องที่่ใช้อยู่ต่างจังหวัดมีการแก้ไขฐานข้อมูล
เลยคิดว่า ไม่ต้องให้ส่งฐานข้อมูลกลับมา
อยากเขียนฟอร์มขึ้นมาฟอร์มหนึ่ง
เพื่อเข้าไปเพิ่มฟิลด์เข้าไปเองโดยไม่มีการเชื่อมต่อฐานข้อมูลกับโปรแกรมเดิม
ตัวฐานข้อมูลอยู่ที่ \\sv\office\data.mdb
แล้วเราก็จะเขียนฟอร์มขึ้นมาฟอร์มเดียว
ให้เค้าไปเปิดในตัวลูกข่าย
มีปุ่มกดให้กดปุ่มแล้ว ไปเพิ่มฟิลด์ตามข้างบน
ต้องเขียนโค๊ตอย่างไรในปุ่มกด
รบกวนอีกครั้งครับ
    
  มันขึ้นข้อความว่า
compileerror:
use r-defined type not defined
คืออย่างนี้ครับ ผมอาจเล่าไม่เคลีย
เอาใหม่
เครื่องที่่ใช้อยู่ต่างจังหวัดมีการแก้ไขฐานข้อมูล
เลยคิดว่า ไม่ต้องให้ส่งฐานข้อมูลกลับมา
อยากเขียนฟอร์มขึ้นมาฟอร์มหนึ่ง
เพื่อเข้าไปเพิ่มฟิลด์เข้าไปเองโดยไม่มีการเชื่อมต่อฐานข้อมูลกับโปรแกรมเดิม
ตัวฐานข้อมูลอยู่ที่ \\sv\office\data.mdb
แล้วเราก็จะเขียนฟอร์มขึ้นมาฟอร์มเดียว
ให้เค้าไปเปิดในตัวลูกข่าย
มีปุ่มกดให้กดปุ่มแล้ว ไปเพิ่มฟิลด์ตามข้างบน
ต้องเขียนโค๊ตอย่างไรในปุ่มกด
รบกวนอีกครั้งครับ
        
    4 @R15191    
        
  
      เท่าที่ดู คำสั่งของ อ.yeadram ก็ใช้ได้นะครับ เพียงพิมพ์ผิดไปหน่อยครับ
* Dim Conn as New adodb.connecttion
- Dim Conn as New adodb.connection
* sql = "ALTER TABLE tbCustom Add Column buy dbDouble;"
- sql = "ALTER TABLE tbCustom Add Column buy Double;"
และหากไฟล์คุณเป็นรูปแบบ accdb ไม่ใช่ mdb ก็ต้องเปลี่ยนเป็น (บอกเผื่อไว้)
* Provider=Microsoft.Jet.OLEDB.4.0
- Provider=Microsoft.ACE.OLEDB.12.0
ประมาณนี้ครับ
จริงๆแล้วนอกจากการใช้ SQL statement สร้างฟิลด์แล้ว เราก็ยังสามารถใช้ VBA จัดการได้เลยเช่นกัน เพียงแต่รูปแบบมันดูอยากกว่า SQL แต่ผมลองเขียนให้เป็นการแลกเปลี่ยนความรู้ดูนะครับ
ตัวอย่างจากโจทย์คุณต้องการสร้างฟิลด์ใหม่ชื่อ buy และ pay สมมุติตารางชื่อ tb_Custom ผมเซ็ทให้ Data type เป็น Double และ Format เป็น Standard เพื่อแสดงทศนิยม 2 ตำแหน่งตามที่คุณต้องการ
(การที่ผู้ถามให้ข้อมูลไม่ละเอียด ทั้งข้อมูลที่มีและความต้องการ ทำให้ผู้ตอบต้องสมมุติ และเดาข้อมูลเอาเองนะครับ)
ลองดูครับ
    
  * Dim Conn as New adodb.connecttion
- Dim Conn as New adodb.connection
* sql = "ALTER TABLE tbCustom Add Column buy dbDouble;"
- sql = "ALTER TABLE tbCustom Add Column buy Double;"
และหากไฟล์คุณเป็นรูปแบบ accdb ไม่ใช่ mdb ก็ต้องเปลี่ยนเป็น (บอกเผื่อไว้)
* Provider=Microsoft.Jet.OLEDB.4.0
- Provider=Microsoft.ACE.OLEDB.12.0
ประมาณนี้ครับ
จริงๆแล้วนอกจากการใช้ SQL statement สร้างฟิลด์แล้ว เราก็ยังสามารถใช้ VBA จัดการได้เลยเช่นกัน เพียงแต่รูปแบบมันดูอยากกว่า SQL แต่ผมลองเขียนให้เป็นการแลกเปลี่ยนความรู้ดูนะครับ
ตัวอย่างจากโจทย์คุณต้องการสร้างฟิลด์ใหม่ชื่อ buy และ pay สมมุติตารางชื่อ tb_Custom ผมเซ็ทให้ Data type เป็น Double และ Format เป็น Standard เพื่อแสดงทศนิยม 2 ตำแหน่งตามที่คุณต้องการ
(การที่ผู้ถามให้ข้อมูลไม่ละเอียด ทั้งข้อมูลที่มีและความต้องการ ทำให้ผู้ตอบต้องสมมุติ และเดาข้อมูลเอาเองนะครับ)
    Dim db As DAO.Database
    Dim tdfLog As TableDef
    Dim strPathName As String
    Dim strTableName As String
 
    strPathName = "\\sv\office\data.mdb"
    Set db = OpenDatabase(strPathName)
    'หากไฟล์ตั้งรหัสผ่านให้ใช้ด้านล่างแทน
    'Set db = OpenDatabase(strPathName, False, False, ";pwd=1234")
   
    strTableName = "tb_Custom" 'ชื่อตารางเป้าหมาย
    Set tdfLog = db.TableDefs(strTableName)
   
    With tdfLog
        .Fields.Append .CreateField("buy", dbDouble)
        .Fields.Append .CreateField("pay", dbDouble)
    End With
    db.TableDefs.Refresh
    
    tdfLog.Fields("buy").Properties.Append tdfLog.Fields("buy").CreateProperty("Format", dbText, "Standard")
    tdfLog.Fields("pay").Properties.Append tdfLog.Fields("pay").CreateProperty("Format", dbText, "Standard")
    
    Set obj = Nothing: Set tdfLog = Nothing
    db.Close: Set db = Nothing
ลองดูครับ
        
    5 @R15225    
        
    
      ใช้ได้แล้วครั
ต้องหาความรู้มากกว่านี้แล้วครับ
ขอบคุณทั้ง2ท่านครับ
    
  ต้องหาความรู้มากกว่านี้แล้วครับ
ขอบคุณทั้ง2ท่านครับ
      Time: 0.0639s
    
      
		
ตั้งค่าให้ตัวแปรคอนเน็คชั้น
สั่งให้ตัวแปรคอนเน็คชั่น รัน SQL Statement
การจะปรับเปลี่ยนโครงสร้างของตาราง เราจะใช้ Statement ที่ขึ้นต้นด้วย Alter Table ครับ (ค้นเพิ่มเติมด้วยนะครับ)
จะเพิ่มตาราง เราจะขึ้นต้นด้วย Create Table....
จะลบตาราง เราขึ้นต้นด้วย Drop Table
ในงานนี้เราจะปรับเปลี่ยนโครงสร้างนะครับ ซึ่งการปรับเปลี่ยนโครงสร้างในความหมายของผม ก็หมายรวมถึง ทั้ง
เพิ่มฟิลด์, ลดฟิลด์, แก้ไขชนิดข้อมูลของแต่ละฟิลด์, ปรับเปลี่ยนขนาดความกว้างของฟิลด์ เช่นเคยตั้งเป็น Text 100 ก็ปรับเป็น Text 50เป็นต้น, การแก้ไขฟิลด์ index, การแก้ไขฟิลด์เชื่อมโยง เป็นต้น....
ตัวอย่างคร่าวๆ ครับ
Sub....
Dim pth as string
Dim Conn as New adodb.connecttion
dim sql as string
pth = "\\server\work\job\bckEnd.mdb"
Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & pth
sql = "ALTER TABLE tbCustom Add Column buy dbDouble;"
Conn.execute(sql)
Conn.close
set Conn = nothing
End sub