แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Kxess

หน้า: 1 [2] 3 4 5
19


Access + Mysql ODBC

error ค่อนข้างแปลก คือใส่ ip นึง แต่ error แจ้ง ip นึง
- ชื่อ domain และ ip ถูกต้องแน่นอน เครื่องอื่นเชื่อมต่อได้หมด เป็นแค่เครื่องนี้เครื่องเดียว
- ชื่อ user ก็ถูกต้องครับ

ในหน้าต่าง odbc
tcp/ip server : ผมลองใส่ทั้ง domain และ ip แต่เวลา error ดันแจ้งเป็น ip ซึ่ง ip นี้เป็น public ip ของเน็ตผมเองครับ
เหมือนกับมันไม่ได้เชื่อมต่อไปที่ ip server ที่เราใส่ แต่เชื่อมต่อไปที่ public ip เลยทำให้หาไม่เจอ มันเป็นเพราะอะไรครับ




20
ลืมแจ้งเพิ่มเติม ตอนกดปุ่ม save ลองจับ error ดู มันฟ้อง
error 3021 No current record.


ตอนนี้แก้ปัญหาได้แล้วครับ
ตอบไว้เผื่อใครเจอปัญหาเดียวกันครับ

--------------------------------------
ผมทดลองโคลนตาราง customer จากเดิมชนิดข้อมูล ที่เก็บค่า จริงเท็จ
case1 > customer_test1 ใช้เป็นค่าเดิมคือ bit(1) ใน Access แสดงชนิดข้อมูลเป็น Yes/No
case2 > customer_test2 แก้ไขจาก bit(1) เป็น tinyint(1) ใน Access แสดงชนิดข้อมูลเป็น Number(integer)
case3 > customer_test3 ลบฟิลด์ข้อมูล bit(1) ทิ้งทั้งหมด
case4 > customer_test3 สร้างฟิลด์ ชนิดข้อมูล bit(1) เหมือน case 1

ทดลองเปิดด้วยฟอร์มเดิม เปลี่ยนแค่ Record Source

case1 > แก้ไขข้อมูลไม่ได้ แจ้ง write conflict เหมือนเดิม
case2 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ  (mySQL เก็บค่า True = -1 / False = 0)
case3 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ 
case4 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ  (mySQL เก็บค่า True = 1 / False = 0)

แต่มีตาราง Product ที่แม้ว่าค่าเดิมจะเป็น bit(1) ก็สามารถใช้งานได้ปกติ

ดูไปดูมา ปรากฎว่า ฟิลด์ที่จะเก็บค่าจริงเท็จ มีเป็นค่า NULL d

- สรุป -
เป็นเพราะฟิลด์ที่เป็น bit(1) มีค่า NULL
ใน case 4 ที่ลบ ฟิลด์ข้อมูล bit(1) ทิ้งแล้วสร้างใหม่ เป็น bit(1) เหมือนเดิม แต่ใช้งานได้ เพราะเมื่อสร้างใหม่ ค่าเริ่มต้นถูกกำหนดให้เป็น 0 ทั้งหมด ไม่มีฟิลด์ใดว่าง
ใน case 2 แม้มีค่าว่าง แค่ใช้งานได้ปกติ เดาว่า เพราะ tinyint(1) อนุญาตให้มีค่าว่างได้


แต่สุดท้ายผมจะเปลี่ยนฟิลด์ bit(1) เป็น tinyint(1) ทั้งหมด

ขอบคุณครับ

--------------------------------------

21
ก่อนอื่น
ผมใช้ access + mysql (ฐานข้อมูลอยู่บน www)
โดยฐานข้อมูลนี้ export มาจาก sql server โดยไม่มี error ใด ๆ ครับ กำหนด pk เรียบร้อยหมดแล้ว

อาการ
- การดึงข้อมูลมาแสดงทำได้ปกติ
- ข้อมูลที่เพิ่มใหม่ เพิ่มได้ แต่แก้ไขไม่ได้ ฟ้อง write conflict
- แต่ข้อมูลเก่า แก้ไขได้ปกติ




ไม่ทราบว่ามีแนวทางการแก้ปัญหาแนะนำมั้ยครับ
ขอบคุณครับ

22
ขออนุญาติถามต่อยอดครับ วิธีแบบในคลิปสามารถใช้ NAS เป็นเซิฟเวอร์ได้ไหมครับ

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

ถ้าจะแชร์ไฟล์และใช้ฐานข้อมูล sql ด้วย ใช้เป็น server ไปเลยดีกว่าครับ

23
ทุกคำสั่ง CurrentDb.Execute ต้องมี dbSeeChanges ต่อท้ายครับ

เช่น CurrentDb.Execute "DELETE * from Customers WHERE Customer_ID = " & CurrentC_ID, dbSeeChanges

24
ห้อง MS Access / : Loop เปลี่ยนสีแถบ Navigation
« เมื่อ: 13 มี.ค. 63 , 08:59:26 »
แบบนี้เลยครับ ขอบคุณมากครับ  :love: :miao:

25
ห้อง MS Access / : Loop เปลี่ยนสีแถบ Navigation
« เมื่อ: 12 มี.ค. 63 , 16:25:19 »
ผมไม่เข้าใจว่าทำไมมันไม่วนเปลี่ยนสีให้ครบทุกแถบ

ผมสามารถอ้างอิงโดยใส่โค้ดทีละบรรทัดแบบนี้ ในเหตุการณ์ onload ของฟอร์มหลัก

Me.Nav_Home.BackColor = 11193702
Me.Nav_Home_Sub1.BackColor = 11193702
Me.Nav_Customers.BackColor = 11193702
.
.
.

แล้วก็วนไปเรื่อย ๆ ทุกแถบก็ได้ สีก็เปลี่ยนทุกแถบ แต่พอจะลอง Loop ดูกลับไม่ได้


26
ห้อง MS Access / : Loop เปลี่ยนสีแถบ Navigation
« เมื่อ: 12 มี.ค. 63 , 14:15:56 »
ขอบคุณครับ

เป็นเหมือนเดิมครับ คือ สีเปลี่ยนเฉพาะแถบ "Home" ซึ่งสีมันควรจะเปลี่ยนทั้ง Home , สนทนา , รายงาน , และแถบอื่น ๆ

สีแดงคือแถบ "HomePage" ซึ่งโค้ดจะอยู่ในนี้ รวมถึงตอนเรียกใช้ Formstyle Me ซึ่ง Me น่าจะเป็นฟอร์มที่อยู่ในแถบ "Home"

ต้องอ้างอิงชื่อฟอร์มยังไงดีครับ











27
ห้อง MS Access / Loop เปลี่ยนสีแถบ Navigation
« เมื่อ: 12 มี.ค. 63 , 10:06:49 »
สวัสดีครับ

ผมจะ loop เพื่อเปลี่ยนสีแถบ ในเหตุการณ์ onload ของ ฟอร์มหลัก โดยมี navigation form อยู่ในส่วนของ Detail ซึ่งผลที่ออกมาคือ
สีเปลี่ยนแค่แถบเดียว คือแถบ "Home" ซึ่งไม่เปลี่ยนทั้งหมด รบกวนช่วยดูหน่อยครับ
ปล. ทุกแถบใส่ Tag ค่า "b1" หมดแล้ว
ขอบคุณครับ



โค้ดฟอร์มหลัก
โค๊ด: [Select]
Sub Formstyle(frm As Form)
Dim ctl As Control

For Each ctl In frm.Controls
        If ctl.Tag = "b1" Then
            ctl.BackColor = 11193702
        End If
    Next ctl
    'ctl = Nothing
End Sub

โค้ดในเหตุการณ์ onload ของฟอร์มหลัก
'แค่เรียก
โค๊ด: [Select]
--
Formstyle Me
--

28
Tools >> Options >> Designers

ติ๊กออก Prevent Saving changes that require table re-creation



*คำอธิบาย การแก้ไขข้อมูลออกแบบตารางพวกนี้ มันจะดรอปและสร้างตารางขึ้นมาใหม่ในชื่อเดิม ซึ่งอาจจะส่งผลให้ข้อมูลสูญหายโดยไม่ได้ตั้งใจ เช่นเผลอลบคอลัมน์แล้วกดบันทึก ข้อมูลในคอลัมน์นั้นก็จะหายไปหมด
ถ้าแก้ไขเสร็จแล้ว ให้มาติ๊กกลับไว้เหมือนเดิมครับ

29
ไม่ค่อยเข้าใจคำถามครับ
หมายถึงปรับ Is Identity เป็น Yes แล้วกด save ไม่ได้หรอครับ ?

ได้กำหนด Primary Key ให้ ID รึยังครับ

และเวลาเพิ่มข้อมูล ID ห้ามเป็นค่าว่าง


30
ถ้าหน้าบ้านใช้ Access ก็จะดึงข้อมูลมาแสดงได้เหมือนเดิมครับ
ข้อมูลที่เก็บก็เป็นตัวเลขเหมือนเดิมครับ ถ้า bound column ถูก

แต่ในตารางของ sql server ไม่มีฟังชั่น lookup มาแสดงแบบ access นะครับ เว้นแต่ว่าจะเขียน query เอง

31

ดูในคำสั่ง Dlookup ครับ ตารางชื่อ tblUser ไม่มี มันควรจะเป็น dbo_tblUser

ถ้ามีหลายตาราง วิธีแก้ชื่อตารางเก่าเป็นชื่อใหม่ ให้ Find and replace โค้ดทั้งหมดครับ

32
ติดตั้ง ดูคลิปนี้ครับ


แล้วก็ลองดูกระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=1126

33
แค่หลักหมื่น ไม่น่าจะมากไปครับ เพราะผมลองหลักหมื่นก็สบาย ๆ
ผมแนะนำให้ export ออกมาเป็น excel ดีกว่าครับ

- ใน Acess การ export เป็น excel ต้องเป็น excel 97 - 2003 ครับ
- ใน sql server ตอนทำการ import ตรง Destination ให้เลือกเป็น SQL Server Native Client 11.0
- ตารางที่เป็น Identity Specification (autonumber) ให้ปรับเป็น No ก่อนที่จะ import ครับ หลัง import ให้มาปรับเป็น yes


//ตัวอย่างการ import

34
เบื้องต้นต้องทำให้ access ติดต่อกับ sql server ให้ได้ก่อนนะครับ (ทำตามคลิป)

ถ้าได้แล้ว สามารถ คลิกขวาที่ตารางที่อยู่ใน access



- เลือกแหล่งข้อมูลที่เราสร้างไว้ มันจะไปสร้างตารางไว้ใน sql server ให้เลย



ปล. มันอาจจะมีปัญหาอยู่บ้างนะครับ บางตาราง อาจจะ export ไม่ได้
ถ้า export ไม่ได้ ผมจะใช้วิธี export เป็น excel แล้วไป import ที่ sql server แทน

35
ลองดูคลิปนี้ครับ


36
หมายถึงทำ access เป็น front end แล้ว sql server เป็น backend ใช่มั้ยครับ
ถ้าใช่ ไม่หายครับ แต่อาจจะมีปัญหาแค่บางคำสั่งทำงานไม่ได้ ต้องแก้ไขเล็ก ๆ น้อย ๆ


หน้า: 1 [2] 3 4 5