แสดงกระทู้

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 - sjs

หน้า: [1] 2 3 4 ... 7
1
Module  Write_TFB
Function PathFile() As String
PathFile = "C:\HP\"
End Function

Sub Write_TFB()
 '*************** dim TextHeader
Dim H_Prefix As String
Dim H_Contract_No As String
Set strm = CreateObject("ADODB.Stream")

'dbConnect.dbConnect     '<--- เครื่องผม Error เลยปิดใว้

H_Prefix = "H"
H_Contract_No = Format(Forms!Form1!Text0, "0000000000")

With strm
   .Open
   .Type = 2
   .Charset = "UTF-8"
   .WriteText H_Prefix & H_Contract_No
   .SaveToFile PathFile & "HP_" & ".txt", 2
   .Close
End With

MsgBox "Gen Text Complete :)"

End Sub


Code ในปุ่ม
Call Write_TFB
    MsgBox "finish"
'-------------------------
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

2
เนื่องจากบอร์ดเรียนรู้ Access สำหรับคนไทยนั้นได้ผ่านการสืบทอดมาหลายรูปแบบได้แก่
1. ASPThai.Net <- mdb(microsoft access database) | ฉบับอ.สุภาพ ไชยยา ผู้ก่อตั้ง
2. ASPThai.Net <-> MS SQL | ฉบับอ.yeadram
3. PHP by SMF <-> My SQL | ฉบับ PookPuy ที่ใช้กันอยู่ในปัจจุบันนี้

     ซึ้งรูปแบบที่ 1 และรูปแบบที่ 2 ในส่วนของโฮสจะต้องเป็น Windows server เท่านั้น และจากการที่โฮสล่มไปเมื่อเดือนสิงหาคม 2565 ผมจึงมีความคิดที่จะเปลี่ยนระบบใหม่ให้รูปแบบคล้ายกันมากขึ้นโดยเฉพาะในส่วนของดาต้าเบสและให้สามารถใช้งานโฮสที่เป็นระบบลีนุกซ์(Linux)ได้ด้วย
     จึงได้ทดลองเปลี่ยนรูปแบบที่ 1.บอร์ดเก่าฉบับ อ.สุภาพ ไชยา เชิญเข้าไปเยี่ยมชมได้จากลิ้งก์ที่อยู่ด้านบนของเว็บบอร์ดหรือที่อยู่บนหน้าหลักครับ *โดยจะยังคงแสดงผลแบบอ่านได้อย่างเดียว
หากพบปัญหาหรืออยากให้เปลี่ยนแปลงสิ่งใดแสดงความคิดเห็นกันมาได้เลยครับ  :question:

รายการโครงการ :yuush:
- PHP หน้าเว็บบอร์ดจากกระทู้ฉบับ อ.สุภาพ ไชยา[แล้วเสร็จ]
- Sitemap กระทู้บอร์ด อ.สุภาพ ไชยา[แล้วเสร็จ]
- PHP หน้าเว็บบอร์ดจากกระทู้ฉบับอ.yeadram[แล้วเสร็จ]
- Sitemap กระทู้บอร์ดอ.yeadram[แล้วเสร็จ] *รวมถึงปรับปรุงใหม่หมดทั้งเว็บบอร์ด
- จัดการรูปภาพที่ใช้ในกระทู้บอร์ดอ.yeadram[แล้วเสร็จ]
- แก้ลิ้งก์ที่มีในบอร์ดให้ไปยังหน้า PHP[แล้วเสร็จ]
- ASP Response.Redirect() to PHP[แล้วเสร็จ]
  ^ มีผลทำให้ไม่ว่าจะลิ้งก์หน้า ASP มาจาก google หรือจากที่ใดจะไปเปิดหน้าบอร์ดฉบับ PHP ทั้งหมด
หน้าเว็บบอร์ดPHP รองรับมุมมองทั้งบนคอมพิวเตอร์ โทรศัพท์มือถือ และแท็บเล็ต (Responsive) :cool:
*การทำ Sitemap นั้นเพื่อให้สามารถใช้ระบบค้นหาด้วย Google เป็นหลักครับ :fake smile:

ปล.ลิ้งก์หน้าเว็บบอร์ดฉบับดั้งเดิม  จะแสดงรายการกระทู้ต่างๆหรือใช้คำสั่งค้นหาภายในบอร์ดนั้นๆได้ โดยเมื่อกดเปิดอ่านจะลิ้งก์มาหน้ากระทู้ฉบับ PHP ครับ
บอร์ดเก่า อ.Yeadram  --> https://www.thai-access.com/yeadram.asp
บอร์ดเก่า อ.สุภาพ ไชยา --> https://www.thai-access.com/chaiya.asp


[8 ตุลาคม 2565]
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

3
ห้อง MS Access / : สอบคำสั่ง Visible
« เมื่อ: 10 มี.ค. 65 , 08:33:27 »
จากโค้ดนี้
Private Sub TWRD_AfterUpdate()

Me.TWRDC = DLookup("[WARDCODE]", "QY_ward_FW")

   ''Call Cmd84_Click
Me.TCtlrRCB = DCount("[LABNO]", "QAshow_Recivest2")
    Me.Requery
msgbox DCount("[LABNO]", "QAshow_Recivest2") 
If Me.TCtlrRCB > 0 Then
    Me.Command81.Visible = True
   Else
   Me.Command81.Visible = False
End If
Me.TWHN.SetFocus
        Me.Refresh
End Sub

ลองเพิ่ม msgbox DCount("[LABNO]", "QAshow_Recivest2") 
ดูหน่อยว่ามันแสดงค่า 0 จริงหรือเปล่า หรือแสดงค่าว่างอยู่
เพราะถ้าแสดงค่าว่าง มันจะไม่เข้าเงื่อนไขด้านล่าง
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

4
ตัวอย่างที่ผมเคยทำและเก็บไว้นะครับ แต่ผมใช้กับ SQL SERVER ไม่เคยลองกับ MySQL นะครับ

- ต้องการลิ้งค์ตารางชื่อ Table1 จาก SQL Server เข้ามายัง MS Access 
- ข้อมูล SQL SERVER
--------------------------
Server Name  : ASPIRE-ONE
Database Name: Demo
Login        : sa
Password     : Abc!23
--------------------------
 
<DAO>
'----------------Code Start----------------
Sub LinkSQL_DAO()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Set db = CurrentDb
    Set tdf = db.CreateTableDef("dbo_Table1") 'ชื่อตารางที่ลิ้งค์เข้ามาใหม่
    tdf.Connect = "ODBC;Driver=SQL SERVER;SERVER=ASPIRE-ONE;UID=sa;PWD=Abc!23;Database=Demo;"
    tdf.SourceTableName = "Table1" 'ชื่อตารางเป้าหมายที่เครื่อง SQL Server
    db.TableDefs.Append tdf
'-------- หากต้องการลิ้งค์เพิ่มอีกตาราง  -------------------- 
'    Set tdf = db.CreateTableDef("dbo_Table2")
'    tdf.Connect = "ODBC;Driver=SQL SERVER;SERVER=ASPIRE-ONE;UID=sa;PWD=Abc!23;Database=Demo;"
'    tdf.SourceTableName = "Table_2"
'    db.TableDefs.Append tdf
'--------------------------------------------------
'-------- หากต้องการลบลิ้งค์ตาราง  --------------------
'    db.TableDefs.Delete "dbo_Table1"
'--------------------------------------------------
    db.Close: Set db = Nothing
End Sub
'-----------------Code End-----------------
 
* หมายเหตุ: คำสั่งนี้จะไม่สามารถเซฟรหัสผ่านได้ ทุกครั้งที่เปิดไฟล์ฐานข้อมูล MS Access ใหม่แล้วเรียกลิ้งค์ตารางที่สร้างจะต้องใส่รหัสผ่านใหม่ในครั้งแรกเสมอ จึงเหมาะกับการใช้งานชั่วคราว หรืออาจต้องใช้คำสั่งลบลิ้งค์ตารางแล้วสร้างใหม่ทุกครั้งเมื่อเปิดไฟล์แทน
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

5
..
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

6
น่าสนใจมากเลยค่ะอาจารย์
ขออนุญาตคุณ001jetnipitด้วยนะคะ

รบกวนอาจารย์ OddyWriter ขอไฟล์ตัวอย่างแบบ 32 bit ด้วยได้ไหมคะ
หนูจะเอาไปปลุกผีงานเก่าที่เคยถอดใจล้มเลิกไปแล้วค่ะ

แต่หนูลองเอาไฟล์ตัวอย่าง64bit ของอาจารย์ไปรันกับ 32bit มันก็ทำงานได้ปกตินะคะ
ไม่ทราบว่าจริงๆแล้วจะมีผลแตกต่างอื่นๆหรือเปล่าคะ

จริงดิ ผมส่งผิดไฟล์เหรอเนี่ย ดันส่ง 32 Bit ไปซะงั้น ถ้าจะ Run บน 64 Bit ให้แก้โค้ด Function เป็น PtrSafe Function ครับ



windows คุณเป็น 64 Bit ไม่ได้หมายความว่า Access คุณจะเป็น 64 bit หรือ 32 Bit นะครับ โปรดเข้าใจให้ถูกต้อง

ไฟล์นี้เป็นโค้ดแบบ 32 บิต เพราะผมส่งผิด ดันนั้นให้แก้ไขโค้ดนิดเดียว รูปในกระทู้ด้านบนที่ผมชี้เอาไว้น่ะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

7
เราสามารถใช้ & เพื่อใช้ Control ในการค้นหาตัวเดียวกันได้ครับ เช่น


Code : sql = "SELECT * FROM Q_PI WHERE [ID_Card] & [NameTH] like '*" & Nz(Me.TextSearch, "*") & "*' AND [Position] like '" & Nz(Me.CmdPosi, "*") & "' AND [Section] like '" & Nz(Me.CmdSec, "*") & "'"

โพสต์นี้ได้รับคำขอบคุณจาก: sjs

8
คิดอยู่นานว่าจะตอบอย่างไรไม่ให้ทำร้ายจิตใจ

1. ควรออกแบบตารางใหม่ โดยแบ่งเป็นตารางดังนี้
1.1 ตารางเรือ (หมายเลขเรือ, ชื่อเรือ)
1.2 ตารางค่าใช้จ่าย (ID, หมายเลขเรือ, วันที่ใช้จ่าย, ประเภทค่าใช้จ่าย, จำนวนที่ใช้จ่าย)
1.3 ตารางการใช้น้ำมัน (ID สำหรับอ้างอิงกับข้อ 1.2 เฉพาะรายการน้ำมัน, ราคาต่อหนวย, จำนวนหน่วย)
1.4 ตารางประเภทค่าใช้จ่าย (ประเภทค่าใช้จ่าย, ตัวคูณที่ค่าเป็น +1/-1 เพื่อนำไปคำนวณกับข้อ 1.2 ในกรณีคิดเป็นกำไร/ขาดทุนในแต่ละเดือน)

2. นำตารางในข้อ 1.2 มาทำ Crosstab Query ก็จะได้ข้อมูลตามที่คุณต้องการครับ
3. ชื่อฟิลด์ทั้งหมด ควรเป็นภาษาอังกฤษ

ปล. Access เป็นฐานข้อมูล ไม่ใช่ Excel ดังนั้นถ้าเปิดตารางดูแล้วให้อารมณ์ Excel แสดงว่ามาผิดทาง
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

9
ห้อง MS Access / : export to excel
« เมื่อ: 30 มิ.ย. 64 , 10:39:25 »
ทำไงก็ไม่ได้ครับ ลองทำหมดแล้ว ท่าน อาจารใดมีวิธีขอคำชี้แนะด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

10
ลองดูนะครับ


โพสต์นี้ได้รับคำขอบคุณจาก: sjs

11
DSum("Nz([s_vol]*[s_price])","fsale","[goods_id]"='" & [qry_จำนวนออก].[goods_id] & "'")
ขออนุญาตขอความรู้ส่วนนี้ว่า ทำไมเราต้องค่อมด้วย  '" &...............& "'    ครับ
ขอบพระคุณอย่างยื่งครับ

goods_id ที่อ้างอิงน่าจะ datatype เป็น text ครับ ไม่ใช้ตัวเลข
ถ้าเป็นตัวเลข เขาอาจจะใช้
DSum("Nz([s_vol]*[s_price])","fsale","[goods_id] =" & [qry_จำนวนออก].[goods_id] & "")

หรือถ้า goods_id เป็นตัวแปรก็ใช้
DSum("Nz([s_vol]*[s_price])","fsale","[goods_id] =" & strgoods_id)
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

12
ผมแปะลิงค์ช่องยูทูปของอาจารย์ TTT ใว้ใน กล่องข่าวด้านบน กับ แหล่งความรู้ & ประชาสัมพันธ์ ด้านล่างกดตามเข้าไปดูกันได้เลยครับผม :yuush:

หรือกดลิงค์จากที่นี่เลยก็ได้ครับ ->> ช่องยูทูปเรียนรู้การพัฒนาซอฟแวร์ฐานข้อมูล MS Access ด้วยตัวเอง By อ.TTT(Access-Creator)
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

13
ห้อง MS Access / : Auto number ไม่ทำงานบน Form
« เมื่อ: 14 พ.ค. 64 , 22:34:04 »
กดเลื่อนไป New Record ยังครับ เครื่องหมาย |> ด้านล่างฟอร์ม
กดแล้วค่ะก็ยังเป็นเลขเดิม
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

14
สอบถามการอัพโหลดไฟล์ Excel ใน MS Access ค่ะ อยากจะ อัพโหลดไฟล์ ได้โดยให้มีการตรวจสอบจากเลขที่บัตรประชาชน โดยเช็คว่า ถ้ามีข้อมูลที่เคยอัพโหลดอยู่แล้ว ให้อัพโหลดเฉพาะข้อมูลที่มีการเปลี่ยนแปลง ข้อมูลไหนไม่มีก็อัพโหลดเข้าตามปรกติ รบกวนแนะนำด้วยนะคะ ขอบคุณค่ะ

ถ้าทำแบบง่ายก็คือ
1.ให้นำเข้าข้อมูลตามบัตรประชาชนทั้งหมดเข้ามาก่อนไปยังตารางสำรอง สมมุติชื่อว่า TempImport นะครับ
2.ใช้การสร้างคิวรี่ โดยกำหนดให้เลือกเอาเฉพาะ รหัสที่ไม่มีในตารางหลัก สมมุติชื่อว่า tblDataMain นะครับ
3.มี Field เก็บเลขบัตรประชาชนชื่อเดียวกันคือ PersonalID


ผมสมมุติมีปุ่มที่ใช้สำหรับนำเข้า 1 ปุ่ม และให้แก้ไขชื่อตารางทั้งสองตามสีแดงที่ผมใส่ไว้ให้ตรงด้วยนะครับ

Private Sub Command0_Click()
'ตัวอย่างโค้ดการนำเข้าข้อมูลโดยมี Dialog ให้เลือกไฟล์เข้ามา
Dim dlg As FileDialog
Dim sql, Deletesql As String
Dim DB As DAO.Database
Set DB = CurrentDb
If MsgBox("คุณต้องการนำเข้าข้อมูลใหม่หรือไม่", vbQuestion + vbYesNo, "ระบบสอบถาม") = vbYes Then

Set dlg = Application.FileDialog(msoFileDialogFilePicker)

With dlg
.Title = "Select the Excel file to import"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xls*", 1
.Filters.Add "All Files", "*.*", 2

If .Show = -1 Then
StrFileName = .SelectedItems(1)

Deletesql = "DELETE * FROM TempImport;" 'สั่งให้ลบข้อมูลของตารางสำรองให้หมดก่อนเพื่อรอรับข้อมูลนำเข้าใหม่ที่จะเข้ามา
DB.Execute Deletesql

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TempImport", StrFileName, True 'นำเข้าไปยังตารางชื่อ TempImport
Else
Exit Sub
End If
End With

'หลังจากนำเข้ามาเสร็จให้ทำการ Append ข้อมูลที่ รหัสประจำตัวประชาชนไม่ซ้ำกัน ไปยังตารางหลักของเรา
sql = "INSERT INTO tblDataMain SELECT * FROM TempImport WHERE (((TempImport.PersonalID) Not In (select [PersonalID] from [tblDataMain])));"
DB.Execute sql
If DB.RecordsAffected <= 0 Then
   MsgBox "ไม่มีข้อมูลที่นำเข้า."
Else
MsgBox "นำเข้าจำนวน " & DB.RecordsAffected & " เรคคอร์ด", vbInformation, "Myprogram"
End If
Set DB = Nothing
End If
End Sub

ใช้แค่ Table เดียวได้ไหมคะ ในการอัพโหลด ต้องการอัพโหลดข้อมูลเช่น เลขที่บัตรประชาชน ข้อมูลการเปลี่ยนแปลง ประมาณนี้นะคะ ยกตัวอย่าง นาย ก เลขบัตรประชาชน 1234567890123 ข้อมูลเก่า  กกกก อัพเดตใหม่เป็น กก77 ประมาณนี้นะคะ ถ้าเลขบัตรประชาชนไหนที่ไม่เคยมีการบันทึกก็ให้บันทึกเข้าไปเลย แต่ในกรณีเคยมีให้อัพเดตเฉพาะข้อมูลที่มีการแก้ไข รบกวนแนะนำด้วยนะคะ ขอบคุณค่ะ
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

15
ทำการย้ายชุดคำสั่ง"แนบไฟล์"ออกมาใว้ข้างนอกด้านล่างกล่องข้อความเพื่อให้ใช้งานได้ง่ายขึ้นแล้วนะครับ :prettiness:

โพสต์นี้ได้รับคำขอบคุณจาก: sjs

16
ใน Access ไม่มีความสามารถนี้ครับ
มีเฉพาะในฐานข้อมูลใหญ่ๆ อย่าง Oracle

ขออธิบายให้เข้าใจง่ายๆ ถึงการทำงานที่แตกต่างกันนะครับ
ใน Oracle นั้น เวลาที่เราสั่ง Delete Data นั้น จะเป็นการปิด Record ที่ลบเท่านั้น (ใส่ Time Stamp เอาไว้ด้วย) แต่ข้อมูลยังไม่ถูกลบ จึงสามารถสั่ง Rollback ได้ แต่ก็ต้องแลกมาด้วยการใช้พื้นที่ ที่เพิ่มขึ้นมาเรื่อยๆ
การสั่งลบข้อมูลจริงๆ ของ Oracle ต้องใช้คำสั่ง Pack เพื่อทำการลบข้อมูลออกจริงๆ

ส่วน Access เมื่อเราสั่ง Delete โปรแกรมจะทำการ Pack ให้ทันทีเลย ทำให้ไม่สามารถดึงข้อมูลกลับมาได้
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

หน้า: [1] 2 3 4 ... 7