แสดงกระทู้

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 ... 6 7 8 [9] 10 11 12 ... 46
145

ให้ใช้โค้ดคิวรี่ใหม่เป็นแบบนี้

โค๊ด: [Select]
SELECT DSum("[รวมเงิน]","[7prapa sum]","[ADDRMU] =" & [ADDRMU] & "") AS จำนวนเงินรวมในแต่ละหมู่, [7prapa sum].ADDRMU AS หมู่ที่, Count([7prapa sum].Addrmu) AS จำนวนสมาชิกในแต่ละหมู่
FROM [7prapa sum]
GROUP BY [7prapa sum].ADDRMU;

แล้วเอาคิวรี่นี้ไปสร้างรายงานนะครับ

วิธีการคือในหน้าออกแบบคิวรี่กด คลิกดูมุมมอง SQL แล้ว Copy Code ด้านบนไปวางแล้ว Run ดูนะครับ

146
ถ้า textbox รหัสบิลเป็น 0002 คือตัวอักษรครับโค้ดจึงควรจะเป็น
โค๊ด: [Select]
DoCmd.OpenReport "rpt_Sale_H2",acViewPreview,,"[SaleNo]= '" & me.SaleNo & "'"
หรือใช้แบบนี้
DoCmd.OpenReport "rpt_Sale_H2", acViewPreview, , "[SaleNo] ='" & Forms![ชื่อฟอร์ม]!SaleNo & "'"

147
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)

149
ใช้ในโค้ดเดิมนี้แหละครับ
แต่เราใช้ IF มาแยก ระหว่าง 32 และ 64 bit โดย
ถ้า64 Bit ให้มี PtrSafe ด้วยเช่น
#if Win64 then
   Declare PtrSafe Function .........................................
   .......................โค้ดประกาสตัวแปรทุกตัวต้องมี PtrSafe ด้วยทุกอัน..................

#else 'ส่วนด้านล่างนี้จะใช้ 32Bit ครับ อันล่างใช้โค้ดเดิมของท่านได้เลย ไม่ต้องมี PtrSafe

   Declare Function ................................
#end if

150
ส่งตัวอย่างที่ทำไว้ มาให้หน่อยได้ไหมครับ
เดี่ยว เขียนเป็นโค้ดให้ครับ
ผมต้องการดูขั้นตอนการ ทำงานเพื่อแสดงผล

ช่วงนี้ไม่ค่อยได้ตอบด้วย ภาระงานเพิ่มขึ้นครับที่โรงพยาบาลมีผู้ป่วยโควิดเพิ่มมากขึ้นด้วย
งานที่ต้องประสานเลยเยอะขึ้นครับเลยไม่ค่อยได้มาตอบ แต่มีหลายๆท่านช่วยตอบอยู่ครับ

หมายเหตุ แต่ช่วงนี้ไม่ค่อยเห็นอาจารย์สันติสุขเลย คิดถึงเลยครับ

151
1.จากโจทย์ใช้ฟอร์มในการระบุค่าไหมครับ
2.หรือมีข้อมูลวันที่และรหัสแคชเชียร์อยู่แล้วในตาราง ต้องการใส่ค่าเรียงลงมาทั้งหมดจากบนลงล่างอัตโนมัติ

ดูจากโจทย์แล้วน่าจะพอทำได้เดี๋ยวพรุ่งนี้ทำให้ครับ
ใช้ในการกำหนดเงื่อนไขหาข้อมูล
Dlookup,Dcount ของวันที่และรหัสแคชเชียร์

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


SendcordNo เรียงตามรหัสแคชเชียร์ในแต่ละวัน ใครมาก่อนได้เลขก่อนใครมาหลังก็ได้เลขถัดไปแต่ถ้าคนมาก่อนมาใช้งานต่อก็ให้รันเลขเดิม
SendcardEndNo เรียงลำดับตามวันที่

แบบนี้ใช่ไหม

152
ผมไม่แน่ใจเหมือนกันครับ ถ้าตารางใหม่ addnew ได้ปกติ
ข้อสันนิษฐาน
   1.การกำหนดประเภทของข้อมูลว่าเหมือนกันหรือไม่(ดูจากตารางใหม่ที่เพิ่งสร้างและเพิ่มได้)
      เพราะบางครั้งเกิดปัญหาการแปลงชนิดข้อมูลไม่ถูกต้องทำให้ไม่สามารถเพิ่มใหม่ได้
   2.ข้อมูลมี primary key แล้วหรือไม่
   3.เช็คการกำหนดค่าซ้ำ(ดูจากตัวที่เพิ่มได้ก็ได้ครัข)

รอน้าๆ ผู้ที่ใช้งาน SQL SERVER โดยตรงมาแชร์ประสบการณ์ตรงส่วนนี้
  :yuush:

153
สอบถามเพิ่มเติม
1.ให้เรียงลำดับ โดยไม่ได้จัดกลุ่มตาม invoice_id ใช่หรือเปล่า ?
2.สมมุติมี invoice_number 000001 , 000002 , 000003
   2.1ถ้าเราลบ 000003 เวลาเราจะเพิ่มใหม่ก็ให้แสดง 000003 กลับมาอีกครั้ง ใช่แบบนี้หรือไม่
   2.2ถ้าเราลบ 000002 ปกติมันจะรันเลขต่อไปคือ 000004 เพราะรันต่อจาก 000003 แบบนี้ไหม

154
โค๊ด Addnew
โค๊ด: [Select]
AddnewSQL = "INSERT INTO dbo_TestTP ( CardID, TPNo, TPIssueDate, TPExpireDate ) " _
& "SELECT dbo_TempImportTP.CardID, dbo_TempImportTP.TPNo, dbo_TempImportTP.TPIssueDate, dbo_TempImportTP.TPExpireDate " _
& "FROM dbo_TempImportTP WHERE (((dbo_TempImportTP.CardID) Not In (select CardID from [dbo_TestTP])));"

โค๊ด Update
โค๊ด: [Select]
UpdateSQL = "UPDATE dbo_TestTP INNER JOIN dbo_TempImportTP ON dbo_TestTP.CardID = " _
& "dbo_TempImportTP.CardID SET dbo_TestTP.TPNo = [dbo_TempImportTP].[TPNo], dbo_TestTP.TPIssueDate = " _
& "[dbo_TempImportTP].[TPIssueDate], dbo_TestTP.TPExpireDate = [dbo_TempImportTP].[TPExpireDate] " _
& "WHERE (((dbo_TestTP.TPNo)<>[dbo_TempImportTP].[TPNo]) AND ((dbo_TestTP.CardID)=[dbo_TempImportTP].[CardID])) " _
& "OR (((dbo_TestTP.TPIssueDate)<>[dbo_TempImportTP].[TPIssueDate])) OR (((dbo_TestTP.TPExpireDate)<>[dbo_TempImportTP].[TPExpireDate]));"

ปรับเป็นแบบนี้นะครับ เราจะไม่ใช้ And เราจะใช้ OR นะครับ
เช็คฟิลล์ TP7No เพื่อความถูกต้องนะครับว่าที่ถูกต้องคือ TP7No  หรือ TPNo

155
อ้างถึง
ชื่อนี้ค่ะ dbo_TempImport
เป็น Database ที่ลิงค์มาจาก SQL Server
หรือจะติดตรงนี้ค่ะ acSpreadsheetTypeExcel8 ต้องไปสร้างหรือกำหนด SpreadsheetType ที่ไหนคะ

ตาราง temp สร้างไว้ที่ front end ได้เลย ไว้วางข้อมูลชั่วคราวเท่านั้น
ไม่ต้องลิ้งมา


156
Deletesql = "DELETE * FROM TempImport;"
ตารางชั่วคราวชื่ออะไรครับ
ตรงสีแดงใส่ชื่อตารางชั่วคราว

157
ตรง Tool >> Reference
เพิ่มตัว MS OFFICE XX Object libary ด้วยครับ ตามภาพ

158
ลอง Compile / DeCompile ดูหรือยังครับ
ลอง compact and repair ด้วยครับ

159
ถ้าเลือก 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

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

เอา DAO ออกไปครับ
ถ้าอยากใช้ DAO ก็เพิ่ม reference ตัวนี้เข้าไป

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

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

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




162
ลองดูโค๊ดนี้ว่าได้ไหม ช่วยๆกันสาย 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

หรือจะปรับแก้ยังไงก็บอกนะครับ

หน้า: 1 ... 6 7 8 [9] 10 11 12 ... 46