แสดงกระทู้

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

หน้า: 1 ... 4 5 6 [7] 8 9 10 ... 32
109
ลอง Compile / DeCompile ดูหรือยังครับ
ลอง compact and repair ด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, ชวลิต เสนะสุทธิ

110
ถ้าเลือก DAO 3.6 ก็เอา
Microsoft Office xx.0 Access Database engine object library ออกไปครับ

อธิบาย
ถ้าไฟล์ที่นามสกุล .accdb จะมี  Microsoft Office xx.0 Access Database engine object library มาให้แล้ว
มันใช้ได้เหมือน DAO

ถ้าจะใช้ DAO 3.6 ก็ต้องติ๊กเอา Microsoft Office XX.0 Access Database engine object library ออกไป

ถ้าใช้ Microsoft Office XX.0 Access Database engine object library ก็กำหนด แนะนำตัวนี้แหละดีแล้วสำหรับรุ่นใหม่ๆ
Microsoft Office  2007 ขึ้นไปใช้
Dim rst as Recordset

ถ้าใช้ DAO 3.6 ใช้กับเวอร์ชั่นเก่าๆ ดี ถ้าเวอร์ชั่นใหม่ๆ ใช้ตัวบน
Dim rst as DAO.Recordset
โพสต์นี้ได้รับคำขอบคุณจาก: ชวลิต เสนะสุทธิ

111
ลองแก้เป็น
dim rst as recordset

เอา DAO ออกไปครับ
ถ้าอยากใช้ DAO ก็เพิ่ม reference ตัวนี้เข้าไป
โพสต์นี้ได้รับคำขอบคุณจาก: ชวลิต เสนะสุทธิ

112
เป็นช่อง เลขใบกำกับภาษีค่ะ

เมื่อกดเริ่มเขียนใหม่ ในฟอร์ม ช่องเลขใบกำกับภาษีต้องกรอกเอง อยู่ค่ะ  ถ้าจะเปลี่ยนเป็นให้ขึ้นมาให้เลย 6 หลัก โดยเรียง 000001,000002,000003

โดยถ้าลบแล้วสามารถย้อนไปเลขที่ลบ เพื่อเขียนข้อมูลใหม่ได้ ต้องแก้ยังไงคะ
Single form หรือ Continuesform ครับ
ส่งไฟล์โปรแกรมที่ทำมาเดี่ยว เพิ่มให้ครับ



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

113
ลองดูโค๊ดนี้ว่าได้ไหม ช่วยๆกันสาย DIY

โค๊ด: [Select]
Private Sub QRCode_AfterUpdate()
Dim strLetterName As String
Dim intNum As Integer
Dim i As Long
Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("table1", dbOpenDynaset)

strLetterName = Left(QRCode, 6)
intNum = Right(QRCode, 3)

For i = 1 To Me.Text0

rst.AddNew
rst!Bcode = strLetterName & intNum
rst.Update
intNum = intNum + 100
Next
rst.Close
Set rst = Nothing
Me.Recalc
End Sub

แต่ความต้องการคือให้ + 100 ไปเรื่อยๆหรือไม่เช่น
ถ้า 6 ครั้ง ก็จะได้ AAABBB100 - AAABBB600
แต่ถ้า 15 ครั้ง Bcode จะเป็น AAABBB100 - AAABBB1500

หรือจะปรับแก้ยังไงก็บอกนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ชวลิต เสนะสุทธิ

114

ลองดูตัวอย่างนี้นะครับ ไม่รู้จะเวิคไหมนะ
โค๊ดจะแสดงผล ในมุมมอง Print Preview หรือ มุมมองเหมือนพิมพ์นะครับ
โค๊ดจะอยู่ใน Event Report Detail นะครับ

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) 'ตรง รายละเอียด ถ้าเป็นภาษาอังกฤษให้เปลี่ยนเป็น Detail_Print แทนรายละเอียด
Dim ctl As Control, strText As Variant, strName As String
    Me.ScaleMode = 1
    For Each ctl In Me.Detail.Controls 'ตรง รายละเอียด ถ้าเป็นภาษาอังกฤษให้เปลี่ยนเป็น Me.Detail แทนรายละเอียด
        If ctl.ControlType = acTextBox Then
        If ctl.Name = "CustomerName" Then 'สีแดงคือชื่อ textbox ที่ต้องการปรับขนาดข้อความ
       
        strName = ctl.Name
            If Nz(ctl.Tag, "") = "" Then
                ctl.Tag = ctl.FontSize
            End If
            ctl.FontSize = ctl.Tag
            Me.FontSize = ctl.FontSize
            strText = ctl.Value
           If Len(strText) > 0 Then
            Do Until TextWidth(strText) < ctl.Width
                ctl.FontSize = ctl.FontSize - 1
                Me.FontSize = ctl.FontSize
            Loop
            Do Until TextHeight(strText) < ctl.Height - (ctl.Height * 0.26)
                ctl.FontSize = ctl.FontSize - 1
                Me.FontSize = ctl.FontSize
            Loop
        End If
        End If
       End If
    Next ctl

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

115
ลองดูตัวอย่างนี้นะครับ

ถ้าไม่เข้าใจตรงโค้ด AddnewSQL กับ UpdateSQL ให้ดูการกำหนดคิวรี่ที่ผมใส่ไว้ให้ด้วยนะครับ
ทั้ง 2 คิวรี่นั้นคือคิวรี่ที่นำไปใช้เขียนโค๊ด โดยมีการกำหนดเงื่อนไขไว้แล้ว คิวรี่ 2 อันนั้น สามารถลบทิ้งได้
เพราะผมสร้างไว้ให้ดูการกำหนดเงื่อนไขเฉยๆ
โดยเงื่อนไขการอัพเดทผมเช็คจาก Field PersonalName นะครับ ถ้าส่วนนี้ไม่เหมือนกันจะอัพเดทใหม่

ตัวอย่างโค๊ด
โค๊ด: [Select]
Private Sub Command0_Click()
'ตัวอย่างโค้ดการนำเข้าข้อมูลโดยมี Dialog ให้เลือกไฟล์เข้ามา
Dim dlg As FileDialog
Dim sql, Deletesql, AddnewSQL, UpdateSQL As String
Dim DB As DAO.Database
Dim DBaddnew As DAO.Database
Dim DBupdate As DAO.Database

Set DB = CurrentDb
Set DBaddnew = CurrentDb
Set DBupdate = 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
End If

'โค้ดสำหรับเพิ่มข้อมูลใหม่ที่ไม่เคยมีรหัสบัตรประชาชน
AddnewSQL = "INSERT INTO tblDataMain ( PersonalID, PersonalName ) " _
& "SELECT TempImport.PersonalID, TempImport.PersonalName " _
& "FROM TempImport WHERE (((TempImport.PersonalID) Not In (select personalID from [tblDataMain])));"

'โค้ดสำหรับอัพเดทข้อมูลใน Field PersonalName ที่มีรหัสบัตรประชาชนตรงกัน
UpdateSQL = "UPDATE tblDataMain INNER JOIN TempImport ON tblDataMain.PersonalID = " _
& "TempImport.PersonalID SET tblDataMain.PersonalName = [TempImport].[PersonalName] " _
& "WHERE (((tblDataMain.PersonalName)<>[TempImport].[PersonalName]) AND ((tblDataMain.PersonalID)=[TempImport].[PersonalID]));"

DBaddnew.Execute AddnewSQL
DBupdate.Execute UpdateSQL

MsgBox "อัพเดทจำนวน " & DBupdate.RecordsAffected & vbCrLf & "เพิ่มใหม่จำนวน " & DBaddnew.RecordsAffected, vbInformation, "Myprogram"
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

116
อ้างถึง
อยากได้แบบคลิกแล้วแสดงตัวอย่างก่อนปริ้นซ์
สามารถใช้   
Docmd.OpenReport "ชื่อของรายงาน",acViewPreview

เพื่อแสดงตัวอย่างก่อนปริ้นซ์ได้
อ้างถึง
(โดยไม่ต้องเด้งกล่องมาให้ใส่เลขที่บิลที่จะปริ้นซ์แบบที่เป็นอยู่)
ที่เด้งกล่อง ต้องเข้าไปดูการออกแบบไว้ครับว่าทำไว้แบบไหน
อ้างถึง
ต้นแบบคืออันนี้ค่ะ
ผมกดเข้าไปดาวน์โหลดไม่ได้มันแจ้งเตือนว่าลิ้งไม่ปลอดภัยแนะนำให้แนบไฟล์มาดีกว่าซึ่งในบอร์ดก็มีให้แนบไฟล์ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: I love movies

117
ใช้32 bitจึงได้ ขอบคุณครับ
ถ้าท่านจะใช้ 64Bit ในอนาคต ที่โค๊ดท่านสามารถเพิ่ม
ptrsafe เพิ่มเข้าไปคำสั่งก็จะสามารถทำงานได้ปกติ
จากคำสั่ง
Declare Function

ให้เพิ่มเป็น Declare PtrSafe Function
ประมาณนี้นะครับ
ถ้าท่านจะสลับกันเพื่อให้คำสั่งสามารถใช้ได้กับ Window ทั้ง 64 และ 32
สามารถกำหนดเงื่อนไขประมาณนี้

โค๊ด: [Select]
#if Win64 then
   Declare PtrSafe Function MyFunc Lib "User32" (ByVal N As LongLong) As LongLong
#else 'ส่วนด้านล่างนี้จะใช้ 32Bit ครับ
   Declare Function MyFunc Lib "User32" (ByVal N As Long) As Long
#end if
โพสต์นี้ได้รับคำขอบคุณจาก: aung

118
อันนี้ตัวอย่างนะครับ
ถ้าของท่านไม่ได้และไฟล์นั้นสามารถส่งทางข้อความให้ตรวจสอบได้ก็คงง่ายขึ้น
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

119
ลองใส่โค้ดดูแล้วครับ โค้ดไม่ทำงานครับ
ถ้าท่าน copy code นี้แล้วก็ไปวางแต่ไม่ได้กำหนดให้ปุ่มรับอีเว้นนี้เข้าไปมันก็จะไม่ทำงานครับ

ลองเช็คตามนี้นะครับกดที่ปุ่ม command botton ตรง event กดเข้าไปแล้วก็เลือกทำงานตามอีเว้นที่ใช้โค้ดนะครับกดเข้าไปแล้วก็เอาโค้ดที่ผมให้ไปลงไปวางแล้วลองดูใหม่อีกครั้งนะครับว่าได้หรือเปล่า

เพราะจากที่เช็คไม่น่าจะมีอะไรผิดพลาดครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

120
เรียนคุณ

อ้างถึง
ยกตัวอย่าง นาย ก เลขบัตรประชาชน 1234567890123 ข้อมูลเก่า  กกกก อัพเดตใหม่เป็น กก77 ประมาณนี้นะคะ
ตารางชั่วคราวเราก็ควรมีไว้เหมือนเดิม เพื่อใช้ตารางนี้ในการตรวจสอบเงือนไขก่อนนำเข้าสู่ตารางหลักครับ

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

ถ้าโอเคกับขั้นตอนที่ผมกล่าวมา เดี่ยวผมปรับโค๊ดให้ใหม่
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

121
ที่เป็นอยู่คือ คลิปปุ่มปริ้นซ์แล้วมีกล่องเด้งขึ้นมาให้ใส่เลขใบกำกับภาษี
ถ้าอยากได้เป็น คลิกแล้วไปปริ้นซ์เลย ต้องแก้ยังไงคะ

ที่มีกล่องเด้งขึ้นมาให้ใส่เลขใบกำกับภาษีนั้นเพราะมีการกำหนด Criteria ใน recordsource หรืออ้างจะมีการสร้าง Inputbox ไว้
ที่ปุ้มปริ้นนั้น เพื่อให้รายงานที่จะแสดงนั้นแสดงตามเลขใบกำกับภาษี แล้วถึงจะดำเนินการปริ้น

ถ้าอยากคลิ๊กแล้วปริ้นเลยนั้นต้องสอบถามก่อนว่า
เวลาจะปริ้นคือปริ้นข้อมูลตามที่แสดงอยู่บนฟอร์มได้หรือไม่ ?
เช่น กำหนด criteria = textbox เลขใบกำกับภาษี ที่แสดงอยู่บนฟอร์ม


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

122
ที่ปุ่มปรับโค๊ดเป็นแบบนี้นะครับ
โค๊ด: [Select]
Private Sub Command145_Click()
On Error Resume Next
Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("M1_GIF", dbOpenDynaset)
    rst.MoveFirst
    Do Until rst.EOF
    rst.Edit
    If rst!Rank > 36 Then
    rst!Status = "2"
    ElseIf rst!Rank <= 36 Then
    rst!Status = "1"
    End If
    rst.Update
       rst.MoveNext
    Loop
   Me.Recalc
    rst.Close: Set rst = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

123
ห้อง MS Access / : เปิดฟอร์มแล้ว ...
« เมื่อ: 09 เม.ย. 64 , 09:59:27 »
1. เปิดฟอร์มแล้วให้ซ่อนหน้าต่างนำทาง โค้ดอย่างไรครับ
2. เปิดฟอร์มแล้วให้ขอบซ้ายของฟอร์มชิดขอบหน้าต่าง (ตอนนี้หน้าต่างมันอยู่กึ่งกลาง) กำหนดตรงไหนครับ
ข้อ1 ใส่ใน Event Form_Load ก็ได้ครับ

    Private Sub Form_Load()
    DoCmd.ShowToolbar "Ribbon", acToolbarNo  'ซ่อน Ribon ด้านบน
    DoCmd.NavigateTo "acNavigationCategoryObjectType"
    DoCmd.RunCommand acCmdWindowHide  'ซ่อนหน้าต่างนำทาง
    End Sub

ข้อ2
1.ประกาสตัวแปลไว้บนสุดของคำสั่ง
    Public FrmTop  As Long
    Public FrmLeft As Long

2.ที่ Event Form_Activate() ใส่โค๊ดนี้เข้าไป
    Private Sub Form_Activate()
    FrmTop = Forms![ชื่อฟอร์ม].WindowTop
    FrmLeft = Forms![ชื่อฟอร์ม].WindowLeft
    FrmTop = Me.WindowTop
    FrmLeft = Me.WindowLeft
    End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, kitisak, ิboonyarit

124
สมมุติตาราง A ชื่อ Mytable
1.สร้างคิวรี่ใส่ SQL เข้าไป ตั้งชื่อ Q1
SELECT Idnumber, LV  FROM MyTable GROUP BY Idnumber, LV HAVING ((Not (LV) Is Null));

2.สร้างปุ่มขึ้นมา 1 ปุ่ม
ใส่โค้ดนี้เข้าไป
Private Sub Command0_Click()
Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Mytable", dbOpenDynaset)
   
    rst.MoveFirst
    Do Until rst.EOF
    If IsNull(rst!LV) Or rst!LV = "" Then
    rst.Edit
    rst!LV = DLookup("LV", "Q1", "Idnumber =" & rst!Idnumber & "")
    rst.Update
    End If
       rst.MoveNext
    Loop
   
    rst.Close: Set rst = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, sjs, nawahovvp

125
มันขยายไม่ได้แล้วจริงๆครับ ผมปรับ width เป็น maximum แล้ว ตอนเปิดฟอร์มจึงแสดงผลได้แค่ครึ่งจอครับ


ที่คุณ UnKnown บอกมาคือไม่ได้กำหนดขนาดฟอร์มใช้ใหญ่เท่าขนาดจอครับ
แต่หมายถึงการกำหนดความละเอียด หรือ pixel ของเครื่องคอมที่จะแสดงบนหน้าจอทีวีมากกว่า
ยิ่งความละเอียดหน้าจอคอมยิ่งมากการแสดงผลที่ จอทีวีก็จะยิ่งใหญ่ขึ้น

และผมลงค้นข้อมูลการกำหนดให้ แสดงผลเต็มหน้าจอ monitor ลองดูจากเว็บไซส์นี้ครับ
มีตัวอย่างโค๊ด และ ไฟล์ access ให้ลองใช้งานและดูการแสดงผลด้วย

https://codedocu.com/Office-365/Access/Basics/vba-Code/Automatically-adjust-Access-forms-to-the-maximum-monitor-size?2505
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, chai

126
B > รับ PIPE 20 M ......

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

หน้า: 1 ... 4 5 6 [7] 8 9 10 ... 32