109
ห้อง MS Access / : สอบถามการเพิ่มตัวเลขลงท้ายอัตโนมัติ
« เมื่อ: 23 เม.ย. 64 , 13:32:38 »
ลอง Compile / DeCompile ดูหรือยังครับ
ลอง compact and repair ด้วยครับ
ลอง compact and repair ด้วยครับ
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.
เป็นช่อง เลขใบกำกับภาษีค่ะSingle form หรือ Continuesform ครับ
เมื่อกดเริ่มเขียนใหม่ ในฟอร์ม ช่องเลขใบกำกับภาษีต้องกรอกเอง อยู่ค่ะ ถ้าจะเปลี่ยนเป็นให้ขึ้นมาให้เลย 6 หลัก โดยเรียง 000001,000002,000003
โดยถ้าลบแล้วสามารถย้อนไปเลขที่ลบ เพื่อเขียนข้อมูลใหม่ได้ ต้องแก้ยังไงคะ
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
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
อยากได้แบบคลิกแล้วแสดงตัวอย่างก่อนปริ้นซ์สามารถใช้
(โดยไม่ต้องเด้งกล่องมาให้ใส่เลขที่บิลที่จะปริ้นซ์แบบที่เป็นอยู่)ที่เด้งกล่อง ต้องเข้าไปดูการออกแบบไว้ครับว่าทำไว้แบบไหน
ต้นแบบคืออันนี้ค่ะผมกดเข้าไปดาวน์โหลดไม่ได้มันแจ้งเตือนว่าลิ้งไม่ปลอดภัยแนะนำให้แนบไฟล์มาดีกว่าซึ่งในบอร์ดก็มีให้แนบไฟล์ได้ครับ
ใช้32 bitจึงได้ ขอบคุณครับถ้าท่านจะใช้ 64Bit ในอนาคต ที่โค๊ดท่านสามารถเพิ่ม
#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
ลองใส่โค้ดดูแล้วครับ โค้ดไม่ทำงานครับถ้าท่าน copy code นี้แล้วก็ไปวางแต่ไม่ได้กำหนดให้ปุ่มรับอีเว้นนี้เข้าไปมันก็จะไม่ทำงานครับ
ยกตัวอย่าง นาย ก เลขบัตรประชาชน 1234567890123 ข้อมูลเก่า กกกก อัพเดตใหม่เป็น กก77 ประมาณนี้นะคะตารางชั่วคราวเราก็ควรมีไว้เหมือนเดิม เพื่อใช้ตารางนี้ในการตรวจสอบเงือนไขก่อนนำเข้าสู่ตารางหลักครับ
ที่เป็นอยู่คือ คลิปปุ่มปริ้นซ์แล้วมีกล่องเด้งขึ้นมาให้ใส่เลขใบกำกับภาษี
ถ้าอยากได้เป็น คลิกแล้วไปปริ้นซ์เลย ต้องแก้ยังไงคะ
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
1. เปิดฟอร์มแล้วให้ซ่อนหน้าต่างนำทาง โค้ดอย่างไรครับข้อ1 ใส่ใน Event Form_Load ก็ได้ครับ
2. เปิดฟอร์มแล้วให้ขอบซ้ายของฟอร์มชิดขอบหน้าต่าง (ตอนนี้หน้าต่างมันอยู่กึ่งกลาง) กำหนดตรงไหนครับ
มันขยายไม่ได้แล้วจริงๆครับ ผมปรับ width เป็น maximum แล้ว ตอนเปิดฟอร์มจึงแสดงผลได้แค่ครึ่งจอครับที่คุณ UnKnown บอกมาคือไม่ได้กำหนดขนาดฟอร์มใช้ใหญ่เท่าขนาดจอครับ