´ÒǹìâËÅ´â»Ãá¡ÃÁ RSS Reader ä´é·Õè¹Õè ...

|
|
|
Visitors - Session views |       
7 ¸Ñ¹ÇÒ¤Á ¾.È.2549 129 Users On-Line. |
|
Visitors - Page views |        1 ¡ØÁÀҾѹ¸ì ¾.È.2551 |
|
|
|
 |
|
ᨡ¿ÃÕ Source Code VB6+Access â»Ãá¡ÃÁÃкº°Ò¹¢éÍÁÙÅ¤ÃØÀѳ±ì ÀÒ¤à¢Õ¹â»Ãá¡ÃÁ |
Category »
VB 6/VB.Net â´Â : Webmaster àÁ×èÍ 16/4/2552 àÇÅÒ: 12:20 | (ÍèÒ¹ : 342684) | ¾Õè¹éͧ¤ÃѺ ... ÅӾѧ¤ÇÒÁ¤Ô´ ¤ÇÒÁàª×èÍ µÒÁËÅÑ¡¡ÒõèÒ§æÁѹÂѧäÁèà¾Õ§¾Í ÁѹµéͧÁÕ¡ÒþÔÊÙ¨¹ì´éÇÂÇèÒ µÒÃÒ§¢éÍÁÙÅ·Õèä´éÍ͡ẺÁÒ¹Ñé¹ ÁѹÁÕ¤ÇÒÁ¶Ù¡µéͧ áÅÐ áÁè¹ÂÓ¨ÃÔ§ËÃ×ÍäÁèÍÂèÒ§äà á¹è¹Í¹¤ÃѺ ... Áѹµéͧãªé¡ÒþÔÊÙ¨¹ì´éÇ¡ÒÃŧÁ×Í»¯ÔºÑµÔà·èÒ¹Ñé¹ áÅÐÊÔè§·Õè¼Á¤Ô´äÇé áÅÐ ·Óä´éáÅéÇ ´Ñ§¹Ñé¹ ¡ÒöèÒ·ʹ¤ÇÒÁÃÙéä»Âѧ¼ÙéÍ×è¹ "¢Í§¨ÃÔ§ ¤×Í Ê×èÍ·Õèà¢éÒã¨ä´é§èÒ áÅÐ ´Õ·ÕèÊØ´" ... àÍÒÅèФÃѺ ÊÓËÃѺ¼ÙéàÃÕ¹ÃÙéã¹ÃдѺàÃÔèÁµé¹ÂèÍÁ¨ÐÁͧÀÒ¾ÍÍ¡ÂÒ¡ÁÒ¡ ÊèǹÃдѺ¡ÅÒ§æ¡ç¾Í¨ÐÁͧÍÍ¡ÅèÐÇèÒ ÁÑ¹ÂØè§ÂÒ¡ÅÓºÒ¡ áÅÐ à»ç¹ÀÒÃеèͼÙé¾Ñ²¹Òâ»Ãá¡ÃÁÁÒ¡¨¹à¡Ô¹ä» ¾Õè¹éͧ¤ÃѺ ... ÍÂèÒÅ×ÁÇèÒ ¼Ùéà¢Õ¹äÁèä´éãªé ¼ÙéãªéäÁèä´éà¢Õ¹ áµè¼Ùéà¢Õ¹µéͧµÒÁ㨼Ùéãªé§Ò¹ äÁèÍÂèÒ§¹Ñé¹áÅéǼÙéãªé§Ò¹à¢Ò (ËÃ×Íà¸Í) µÒÁͧ¤ì¡ÃµèÒ§æ ¨ÐÁÕ¤ÇÒÁÃÙéÊÖ¡µè͵éÒ¹§Ò¹·ÕèàÃÒÊÃéÒ§Áѹ¢Öé¹ÁÒ ·ÕèàËç¹æªÑ´à¨¹àÅ¡ç¤×Í ¼Ùéãªé¨ÐËѹ¡ÅѺä»ãªé Excel à¡çº¢éÍÁÙÅÍÂèÒ§à´ÔÁÂѧ¨Ð´Õ«èСÇèÒÍÕ¡ ... 55555+ ...
 |
 |

¡ÒùӢéÍÁÙŨҡµÒÃÒ§¡ÃÔ´ÁÒáÊ´§¼Å - â»Ãá¡ÃÁÂèÍ RecordToScreen
à¾ÔèÁàµÔÁ
- à·èÒ·Õè¼Á¾ºàËç¹µÒÁ˹ѧÊ×Í µÒÁàÇçº ËÃ×Í â»Ãá¡ÃÁ·Õè¢ÒÂã¹ÃÒ¤ÒËÅÑ¡ÃéÍ ËÅÑ¡¾Ñ¹ (ËÅÑ¡ËÁ×蹡çÁÕ) ÅéǹáÅéÇáµèãªéÇÔ¸Õ¡ÒÃà¡çº¢éÍÁÙÅẺ Text á·º·Ñé§ÊÔé¹ ã¹¡Ã³ÕẺ¹Õé ¢éÍÁÙÅ·ÕèáÊ´§ã¹ ComboBox ËÒ¡ÁÕ¤èÒ«éӡѹ à¢Ò¡çãªé¤ÓÊÑè§ SELECT DISTINCTROW à¾×èÍÅ´¨Ó¹Ç¹¡ÒÃáÊ´§¼Å ¨Ò¡¹Ñ鹡ç¨Ð¹Ó¤èÒ·Õèà»ç¹ Text à¡çºÅ§µÒÃÒ§ËÅÑ¡ä»àÅ ... ͹Öè§ áÁéÇèÒàÃҾѲ¹Òâ»Ãá¡ÃÁ¢Öé¹ÁÒ áÅÐäÁèä´éà»ç¹¤¹ãªé§Ò¹¡çµÒÁ·Õ ¡çÍÂèÒä´éÅ×ÁàÃ×èͧ¢Í§¡Òà Maintenance Ãкº°Ò¹¢éÍÁÙÅ ¡ÒÃà¾ÔèÁàµÔÁ »ÃѺ»Ãا»ÃÐÊÔ·¸ÔÀÒ¾ã¹Çѹ¢éҧ˹éÒàÍÒäÇé´éÇ ... ´Ñ§¹Ñé¹àÁ×è;Õè¹éͧä´éà¢éÒÁÒÍèÒ¹º·¤ÇÒÁ¹ÕéáÅéÇ ¡çµéͧãªéÇÔ¨Òóҳ㹡ÒõѴÊÔ¹ã¨àÅ×Í¡àÍÒàͧÅèСѹ¤ÃѺ Ẻä˹·ÕèÁѹÁÕ»ÃÐÊÔ·¸ÔÀÒ¾ÁÒ¡¡Çèҡѹ
àÃÔèÁµé¹¡Ãкǹ¡Ò÷ӧҹ
' Êèǹ¢Í§¡ÒùӢéÍÁÙÅÁÒáÊ´§¼Å
Sub RecordToScreen()
Set RS = New Recordset
' ¹Ó¢éÍÁÙŨҡµÒÃÒ§ÁÒáÊ´§¼Å
' äÁèµéͧÁÒ¢Âѹ¹Ñè§¾ÔÁ¾ìàͧËÃÍ¡¤ÃѺ
' ä»ãªéẺÊͺ¶ÒÁ (Query) ã¹ MS Access áÅзӡÒõѴà¢éÒÁÒàÅ ...
Statement = "SELECT tblAsset.AssetPK, tblAsset.AssetID, tblAsset.SerialNumber, " & _
" tblAsset.Class, tblAsset.Model, tblAsset.DateReceived, tblAsset.UnitPrice, " & _
" tblAsset.Reference, tblAsset.Memo, tblAsset.DateAdded, " & _
" tblAsset.DateModified, tblAssetName.AssetName, tblBrandName.BrandName, " & _
" tblGroup.GroupName, tblUnit.UnitName, tblSource.SourceName, " & _
" tblStatus.StatusName, tblLocation.LocationName " & _
" FROM (tblSource INNER JOIN ((tblGroup INNER JOIN " & _
" (tblBrandName INNER JOIN (tblAssetName INNER JOIN " & _
" (tblUnit INNER JOIN tblAsset ON tblUnit.UnitPK = tblAsset.UnitFK) ON " & _
" tblAssetName.AssetNamePK = " & _
" tblAsset.AssetNameFK) ON tblBrandName.BrandNamePK = " & _
" tblAsset.BrandNameFK) ON tblGroup.GroupNamePK = tblAsset.GroupNameFK) " & _
" INNER JOIN tblLocation ON tblAsset.LocationFK = tblLocation.LocationPK) " & _
" ON tblSource.SourcePK = tblAsset.SourceFK) INNER JOIN tblStatus ON " & _
" tblAsset.StatusFK = tblStatus.StatusPK " & _
" WHERE [tblAsset.AssetPK] = " & PK & _
" ORDER BY [tblAsset.AssetPK] "
RS.Open Statement, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
' ¡Ó˹´¡ÒÃáÊ´§¼Å¢éÍÁÙź¹Ë¹éÒ¨Í
txtAssetID.Text = "" & RS("AssetID")
' µéͧà¡çº¤èÒà´ÔÁ¢Í§·ÐàºÕ¹¤ÃØÀѳ±ìäÇé¡è͹ (ÍèÒ¹ÃÒÂÅÐàÍÕ´·Õè cmdSave_Click)
' ãªéà·¤¹Ô¤§èÒÂæ ËÁÙæ ... àÍÒ¤èÒã¹ Text ä»à¡çºäÇéã¹ËÒ§ àÍé Tag
' ¾Õè¹éͧ¤§¨Ðä´éÃÙé»ÃÐ⪹ì¢Í§¡ÒÃãªé§Ò¹ Tag áËÅФÃÒǹÕé ... ¤ÇÒÁÅѺ·Õè«Ø¡«è͹㹠VB ÁÒáʹ¹Ò¹
' ÁѹÁդسÊÁºÑµÔ»ÃШӵÑÇ Tag àÍÒäÇé·ÓÍÐäà ... 55555+ ... ¨Øê¡¡ÃÙê
txtAssetID.Tag = txtAssetID.Text
' ¡ÒÃâËÅ´¤èÒ¨Ò¡µÒÃÒ§ÂèÍ (tblBrandName) à¢éÒÊÙè ComboBox
' ¾Ô¨ÒóҡÒÃàª×èÍÁâ§µÒÃÒ§ÂÕèËéÍ (tblBrandName)
' ä»â»Ãá¡ÃÁÂèÍÂ㹡ÒÃâËÅ´ÃÒ¡ÒõèÒ§æ¢Í§µÒÃÒ§ÂèÍ (Detail) à¢éÒÊÙè ComboBox ¤èÒ·ÕèÊè§ä»ÁÕ
' ª×èÍ ComboBox, ª×è͵ÒÃÒ§, ª×èÍ Field ·Õèà»ç¹ Primary Key, ª×èÍ¿ÔÅ´ì·Õèà»ç¹ÃÒ¡ÒÃ
Call LoadComboBox( _
cmbBrandName, _
"tblBrandName", _
"BrandNamePK", _
"BrandName" _
)
' àÍÒ¤èÒ·ÕèÍÂÙèã¹µÒÃÒ§¢éÍÁÙÅ à·Õº¤èÒãËéµÃ§¡Ñ¹ã¹ÃÒ¡Òà (List) ¢Í§ ComboBox
cmbBrandName.Text = RS("BrandName")
' ===========================================================================
' ÊèǹÍ×è¹æ ãËéä»´Ù·Õèâ¤é´â»Ãá¡ÃÁä´éàÅÂ
' .........................
' .........................
End Sub
' Load ÃÒ¡ÒÃà¢éÒÊÙè ComboBox ¤èÒ·ÕèµéͧÊè§ÁÒ 4 ªØ´ ¤×Í
' ª×èÍ ComboBox, ª×è͵ÒÃÒ§, ª×èÍ¿ÔÅ´ì Primary Key áÅÐ ª×èÍ¿ÔÅ´ìÃÒ¡ÒÃ
Sub LoadComboBox( _
cmb As ComboBox, _
tblName As String, _
FieldPK As String, _
FieldName As String _
)
Set DS = New ADODB.Recordset
SQLStmt = "SELECT * FROM " & tblName & " ORDER BY " & FieldName
Set DS = ConnDB.Execute(SQLStmt, , adCmdText)
cmb.Clear
Do Until DS.EOF
cmb.AddItem "" & DS(FieldName)
DS.MoveNext
Loop
DS.Close: Set DS = Nothing
End Sub
|
¡Òäé¹ËÒ¢éÍÁÙÅã¹ ComboBox - â»Ãá¡ÃÁÂèÍ SearchComboBox
¡ÒèӡѴ¤ÇÒÁÂÒÇ¢éÍÁÙÅã¹ ComboBox - â»Ãá¡ÃÁÂèÍ MaxComboBox
' ¨ÐÍÂÙèã¹à˵ءÒóì¢Í§¡Òá´á»é¹¤ÕÂìºÍÃì´
Private Sub cmbBrandName_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
SendKeys "{TAB}"
Else
' ä»â»Ãá¡ÃÁÂèÍÂ㹡Òäé¹ËÒ¤Óã¹ ComboBox â´ÂÊ觤èÒä» 2 µÑÇ
' ª×èͧ͢ ComboBox áÅÐ KeyAscii ·Õ衴ŧä»
Call SearchComboBox(cmbBrandName, KeyAscii)
' ¨Ó¡Ñ´¤ÇÒÁÂÒǢͧ¡ÒþÔÁ¾ì¤Óã¹ ComboBox
Call MaxComboBox(cmbBrandName, 80, KeyAscii)
End If
End Sub
' =========================================================
' â»Ãá¡ÃÁÂèÍÂ㹡Òäé¹ËÒ¤Óã¹ÃÒ¡Òâͧ ComboBox
Private Sub SearchComboBox(cmb As ComboBox, KeyAscii As Integer)
' =========================================================
Dim strKey As String, iRet As Long, LenKey As Long
cmb.SelText = ""
strKey = cmb.Text & Chr$(KeyAscii)
iRet = SendMessage(cmb.hWnd, CB_FINDSTRING, -1, ByVal strKey)
If iRet <> CB_ERR Then
LenKey = Len(strKey)
cmb.Text = cmb.List(iRet)
cmb.ListIndex = iRet
KeyAscii = 0
cmb.SelStart = LenKey
cmb.SelLength = Len(cmb.Text) - LenKey
End If
End Sub
' =========================================================
' =========================================================
' ¿Ñ§¤ìªÑè¹·ÕèªèǨӡѴ¤ÇÒÁÂÒÇ¢éÍÁÙÅÊÓËÃѺ ComboBox
Private Sub MaxComboBox(cmb As ComboBox, MaxChar As Integer, KeyAscii As Integer)
' =========================================================
If Len(cmb.Text) >= MaxChar Then ' ¶éÒËÒ¡ÁÕ¤ÇÒÁÂÒÇÁÒ¡¡ÇèÒ ËÃ×Í à·èҡѺ·Õèä´éµÑé§äÇé
If KeyAscii <> vbKeyBack Then ' à»ç¹¡Òá´¤ÕÂì Back Space ËÃ×ÍäÁè
KeyAscii = 0 ' äÁèãªèãËé¶×ÍÇèÒäÁèä´é¡´¤ÕÂìã´æàÅÂ
End If
End If
End Sub
' =========================================================
|
¡Òúѹ·Ö¡¢éÍÁÙÅ áºè§ÍÍ¡ä´é 2 ÅѡɳР¤×Í
- ¡ÒÃà¾ÔèÁ¢éÍÁÙÅãËÁè Êèǹ¹ÕéÊÒÃÐÊÓ¤Ñ ¤×Í ¡ÒÃËÒ Primary Key µÑÇãËÁè áÅÐ AssetID µéͧäÁè仫éӡѺ¢Í§à´ÔÁ
- ¡ÒÃá¡é䢢éÍÁÙÅ ÊÒÃÐÊӤѵéͧäÁèãËé¡ÒÃá¡éä¢áÅéÇ AssetID ÁÕ¤èÒ«éӡѺ¢Í§à´ÔÁ
Private Sub cmdSave_Click()
' ¤èÒ AssetID ËÃ×Í ·ÐàºÕ¹¤ÃØÀѳ±ì ¨Óà»ç¹µéͧ»é͹à¢éÒÁÒ
If Trim(txtAssetID.Text) = "" Or Len(Trim(txtAssetID.Text)) = 0 Then
MsgBox "¡Ãسһé͹·ÐàºÕ¹¤ÃØÀѳ±ìãËéàÃÕºÃéÍ¡è͹´éÇÂ.", vbOKOnly + vbExclamation, "ÃÒ§ҹʶҹÐ"
txtAssetID.SetFocus
Exit Sub
End If
'
' µÃǨÊͺ¡Òëéӡѹ¢Í§ÃËÑÊ·ÐàºÕ¹¤ÃØÀѳ±ì
' =================================================================
' ÁѹÁÕâÍ¡ÒÊà»ç¹ä´é 2 ¡Ã³Õ ¤×Í
' à¾ÔèÁ¢éÍÁÙÅãËÁè - ·ÓãËé txtAssetID.Text ¨ÐäÁèµÃ§¡Ñ¹¡Ñº txtAssetID.Tag (¤èÒ¹Õé¨ÐµéͧÇèÒ§)
' á¡é䢢éÍÁÙÅ - ÁÕâÍ¡ÒÊä´é 2 ·Ò§ ¤×Í
' 1. äÁèÁÕ¡ÒÃá¡é䢤èÒã¹ txtAssetdID.Text ¨Ð·ÓãËé txtAssetID.Text = txtAssetID.Tag
' ´Ñ§¹Ñé¹äÁèµéͧä»àÊÕÂàÇÅÒ·Ó¡ÒÃà»ÃÕºà·Õº¤èÒà´ÔÁã¹°Ò¹¢éÍÁÙÅ
' 2. ÁÕ¡ÒÃá¡é䢤èÒã¹ txtAssetID.Text ´Ñ§¹Ñé¹ txtAssetID.Text <> txtAssetID.Tag ·ÓãËé
' µéͧ¹Ó¤èÒ仵ÃǨÊͺÇèÒÁÕ¤èÒ txtAssetID.Text (·Õèà»ÅÕè¹ä») 仫éӡѺ¤èÒà´ÔÁã¹°Ò¹¢éÍÁÙÅËÃ×ÍäÁè
' à¢Õ¹ VB ÁҹѺ 10 »Õ ... à·¤¹Ô¤§èÒÂæ¹Õé ¼Á¡çÂѧãªé§Ò¹ä´éäÁèà»ÅÕè¹á»Å§·Ñé§ VB6 ËÃ×Í VB.Net
' =================================================================
If txtAssetID.Text <> txtAssetID.Tag Then
If CheckNewCode > 0 Then
MsgBox "ÁÕ·ÐàºÕ¹¤ÃØÀѳ±ì: " & Trim(txtAssetID.Text) & " àÃÕºÃéÍÂáÅéÇ ¡ÃسÒá¡éä¢ãËÁè´éÇÂ.", _
vbOKOnly + vbExclamation, "ÃÒ§ҹʶҹÐ"
txtAssetID.SetFocus
Exit Sub
End If
End If
' ================================
' 仺ѹ·Ö¡¢éÍÁÙÅä´éàÅÂ
Call SaveData
' ================================
End Sub
' =================================================================
' ¿Ñ§¤ìªÑè¹µÃǨÊͺ¡Òëéӡѹ¢Í§·ÐàºÕ¹¤ÃØÀѳ±ì (ËÃ×ÍÍ×è¹æ) ¡Ã³Õ¢éÍÁÙÅà»ç¹ Text
' ¨Ò¡¹Ñé¹Ê觤èÒ¡ÅѺ ËÒ¡à»ç¹ 0 áÊ´§ÇèÒä»äÁèà¡Ô´¡Òëéӡѹ¢Í§¢éÍÁÙÅ
' ¤èÒÊè§¡ÅѺÁÒ¡¡ÇèÒ 0 ... à¡Ô´¡Òëéӡѹ ¨ÐµéͧºÑ§¤ÑºäÁèÊÒÁÒöà¾ÔèÁ ËÃ×Í á¡é䢢éÍÁÙÅä´é
' =================================================================
Function CheckNewCode() As Long
Set DS = New Recordset
SQLStmt = "SELECT * FROM tblAsset WHERE [AssetID] = " & "'" & Trim(txtAssetID.Text) & "'" & _
" ORDER BY [AssetPK] "
' ËÒ¡äÁèÃкØà»ç¹ adUseClient ¨Ðãªé¤èÒà´ÔÁ·ÕèµÑé§µé¹ (Default) à»ç¹áºº adUseServer
' ¡ÒÃãªéẺ adUseClient à¾×è͵éͧ¡ÒÃãËéãªéàÁ¸Í´¢Í§¡ÒùѺ Record ä´é ¹Ñ蹤×Í
' DS.RecordCount
DS.CursorLocation = adUseClient
DS.Open SQLStmt, ConnDB, adOpenForwardOnly,adLockReadOnly, adCmdText
CheckNewCode = DS.RecordCount
DS.Close: Set DS = Nothing
End Function
' =================================================================
' â»Ãá¡ÃÁÂèÍÂ㹡Òúѹ·Ö¡¢éÍÁÙÅ äÁèÇèÒ¨Ðà»ç¹¡ÒÃà¾ÔèÁ ËÃ×Í ¡ÒÃá¡é䢢éÍÁÙÅ
' =================================================================
Private Sub SaveData()
Set RS = New Recordset
' Áѹà»ç¹à·¤¹Ô¤¢Í§¡ÒÃÅ´¨Ó¹Ç¹â¤é´Å§ ¼ÁãªéÁҹѺ 10 »ÕáÅéÇ ... äÁèà»ÅÕè¹
' ¡Ã³Õà»ç¹¡ÒÃà¾ÔèÁ¢éÍÁÙÅãËÁè
If NewData Then
' ¤é¹ËÒ¤èÒ PK ¡è͹
Call SetupNewData
'
Statement = "SELECT * FROM tblAsset ORDER BY AssetPK"
RS.Open Statement, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
' ¼ÁÁѹµÔ´ AddNew ÁÒµÑé§áµèãªé DAO áÅéǤÃѺ ... Êèǹ¹Õé¤×Í¡ÒÃãªé INSERT ¹èФÃѺ
RS.AddNew
RS("AssetPK") = PK
RS("DateAdded") = FormatDateTime(Now(), vbShortDate)
RS("DateModified") = FormatDateTime(Now, vbShortDate)
'========== á¡é䢢éÍÁÙÅ ============
Else
'
Statement = "SELECT * FROM tblAsset WHERE AssetPK = " & PK
RS.Open Statement, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
End If
' ¡Ã³Õ¢Í§ Text à¾×èÍ»éͧ¡Ñ¹¤èÒÇèÒ§ ãËéãÊèà¤Ã×èͧËÁÒ Double Quote äÇé´éҹ˹éҢͧ TextBox àÊÁÍ
RS("AssetID") = "" & Trim(txtAssetID.Text)
RS("SerialNumber") = "" & Trim(txtSerialNumber.Text)
RS("Model") = "" & Trim(txtModel.Text)
RS("Class") = "" & Trim(txtClass.Text)
'
' µÃǨÊͺ¤èÒã¹ ComboBox
' ÂÕèËéÍ - BrandName
' ª×èÍ¤ÃØÀѳ±ì â´Â¡ÒÃÊ觤èÒ仵ÃǨÊͺËÒ¤èÒ Primary Key ¢Í§µÒÃÒ§ÂèÍ (Detail) ¤èÒ·ÕèÊè§ä» ÁÕ
' ª×èÍ ComboBox, ª×è͵ÒÃÒ§, Field ·Õèà»ç¹ PK, Field ·Õèà»ç¹ÃÒ¡Òà (¤èÒ·Õèµéͧ·´ÊͺËÒ Primary Key)
' ¤èÒ·ÕèÊè§¡ÅѺÁÒ¨Ðà»ç¹ Primary Key ¢Í§áµèÅеÒÃÒ§Âè͹Ñè¹àͧ
' áÅÐ Primary Key µÑǹÕé¡ç¤×Í Foreign Key ã¹µÒÃÒ§ËÅÑ¡ (tblAsset)
' ÍÂèÒ§·Õèä´éºÍ¡ä»µÍ¹Í͡Ẻ¢éÍÁÙÅ àÃÒ¨Ðà¡çº¤èÒ Foreign Key (BrandNameKF) ¹Õéŧ㹵ÒÃÒ§ËÅÑ¡à·èÒ¹Ñé¹
RS("BrandNameFK") = VerifyComboBox( _
cmbBrandName, _
"tblBrandName", _
"BrandNamePK", _
"BrandName" _
)
' ¡Ã³Õ¢Í§ ComboBox µÑÇÍ×è¹æ¡çàªè¹à´ÕÂǡѹ ´Ùä´é¨Ò¡â¤é´â»Ãá¡ÃÁ¨ÃÔ§æ
' ........................
' ........................
RS.Update
RS.Close: Set RS = Nothing
'
NewData = False
' Ê觤èÒ仺͡¿ÍÃìÁËÅÑ¡ãËé Refresh
FormUpdate = True
MsgBox "ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÃéÍÂ", vbOKOnly + vbInformation, "ÃÒ§ҹʶҹÐ"
Unload Me
End Sub
' ===================== ÊÃéÒ§ Record ãËÁè ==========================
' µéͧ¤Ó¹Ç³ËÒ¤èÒ Primary Key ãËéàÃÕºÃéÍ¡è͹
Sub SetupNewData()
' ==========================================================
Dim Rec As Long
Set DS = New Recordset
' ¹Ó¢éÍÁÙŨҡµÒÃÒ§ÁҤӹdzËÒ¤èÒ Primary Key ÊÙ§ÊØ´
SQLStmt = "SELECT Max(tblAsset.AssetPK) As MaxPK FROM tblAsset "
' ¡Ã³Õ¡ÒÃÍèÒ¹¢éÍÁÙŵéͧãªé adOpenForwardOnly ¤Ùè¡Ñº adLockReadOnly àÊÁÍ à¾×èÍ¡ÒÃÍèÒ¹¢éÍÁÙÅä´éàÃçÇ¡ÇèÒ
DS.Open SQLStmt, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
' µÑÇá»Ã PK à»ç¹µÑÇá»ÃẺ Public ÁͧàËç¹ä´é·ÑèÇ·Ñé§¿ÍÃìÁ¹Õé
PK = DS("MaxPK") + 1
DS.Close: Set DS = Nothing
End Sub
' ==========================================================
' ¿Ñ§¤ìªÑè¹·Õèãªé㹡ÒõÃǨÊͺ¤èÒ·ÕèÍÂÙèã¹ ComboBox à¾×èͤé¹ËÒ¤èÒ Primary Key ã¹µÒÃÒ§ÂèÍÂ
' ËÒ¡ËÒ¢éÍÁÙÅäÁ辺 ¡çÊÒÁÒöºÑ¹·Ö¡¤èÒ·Õè¤ÕÂìà¢éÒä»ãËÁèä´éàÅ â´ÂäÁè¨Óà»ç¹µéͧÍÍ¡ä»à¾ÔèÁ¢éÍÁÙÅãËÁèáµèÍÂèÒ§ã´
' ==========================================================
Function VerifyComboBox( _
cmb As ComboBox, _
tblName As String, _
FieldPK As String, _
FieldName As String _
) As Integer
Dim CountRec As Integer ' äÇé¹Ñº¨Ó¹Ç¹¢Í§µÒÃÒ§ÂèÍÂ
' µÃǨÊͺÇèÒÁÕ¡Òûé͹¢éÍÁÙÅËÃ×ÍäÁè ËÒ¡äÁèÁÕãËé¡Ó˹´¤èÒ Default à»ç¹ 0
' ¨Ò¡¹Ñé¹ Return ¤èÒ¡ÅѺ áÅÐÍÍ¡¨Ò¡¿Ñ§¤ìªÑè¹ä»àŤÃѺ¾Õè¹éͧ ... à¾×èÍà»ç¹¡ÒÃäÁèàÊÕÂàÇÅÒ
If cmb.Text = "" Or Len(cmb.Text) = 0 Or cmb.Text = "-" Then
VerifyComboBox = 0
Exit Function
End If
Set DS = New Recordset
SQLStmt = "SELECT * FROM " & tblName & " WHERE [" & FieldName & "] = " _
& "'" & Trim(cmb.Text) & "'" & _
" ORDER BY " & FieldPK
' ======================================================================
' ËÅÒ¤¹ÁÑ¡·Ó¼Ô´ áÅÐÁͧ¢éÒÁÁÑ¹ä» ÊÓËÃѺ¡ÒÃà¢Õ¹ SQL Statement
' SQL Statement ... ¡Òäé¹ËÒ¤èÒâ´Â¡ÒÃà»ÃÕºà·Õº¡Ñº¢éÍÁÙŪ¹Ô´¢éͤÇÒÁ Text ËÃ×Í String
' SELECT * FROM ... WHERE [¿ÔÅ´ìẺ¢éͤÇÒÁ] = '1020' ... (ÍèÒ¹ÇèÒ Ë¹Öè§ ÈÙ¹Âì Êͧ ÈÙ¹Âì)
' àÇÅÒà¢Õ¹ Statement ¨Ðµéͧà¢Õ¹¤èÒ·Õè¹ÓÁÒà»ÃÕºà·ÕºãËéÍÂÙèÀÒÂãµéà¤Ã×èͧËÁÒ Single Quote (') àªè¹
' "SELECT * FROM ... WHERE [AssetID] = " & "'" & txtAssetID.Text & "'" ... ¨´¨ÓÃٻẺ¹ÕéãËé´Õ
' Êèǹ¡Ã³Õ¢Í§µÑÇàÅ¢äÁèµéͧÁÕà¤Ã×èͧËÁÒ Single Quote àªè¹
' SELECT * FROM ... WHERE AssetPK = 1020 (ÍèÒ¹ÇèÒ Ë¹Ö觾ѹÂÕèÊÔº) àªè¹
' "SELECT * FROM ... WHERE [AssetPK] = " & txtAssetPK.Text
' ======================================================================
DS.CursorLocation = adUseClient
DS.Open SQLStmt, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
CountRec = DS.RecordCount
' áÊ´§ÇèÒäÁèÁÕã¹ÃÒ¡Òà ´Ñ§¹Ñé¹àÃÒµéͧà¾ÔèÁÃÒ¡ÒÃà¢éÒä»ãËÁèã¹µÒÃÒ§ÂèÍÂ
If CountRec <= 0 Then
Set DS = New Recordset
SQLStmt = "SELECT Max(" & tblName & "." & FieldPK & ") As MaxPK " & " FROM " & tblName
DS.CursorLocation = adUseClient
DS.Open SQLStmt, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
' à¾ÔèÁ¤èÒ Primary Key ¢Í§µÒÃÒ§ÂèÍ (Detail) ¢Öé¹ÍÕ¡ 1
CountRec = DS("MaxPK") + 1
' ¡Ò÷Õè¼ÁäÁèÊÑè§»Ô´µÒÃÒ§¢éÍÁÙÅ DS.Close ¡çà¾ÃÒФÓÊÑè§ Set DS = New Recordset
' Áѹ¨ÐµÑ´¡Òê×èÍÁµèÍà´ÔÁÍÍ¡ä»ã¹·Ñ¹·Õä´éàŤÃѺ ... äÁèµéͧËèǧ
Set DS = New Recordset
SQLStmt = "SELECT * FROM " & tblName & " ORDER BY " & FieldPK
' ¡Òúѹ·Ö¡¢éÍÁÙÅ ¨Ðãªé adOpenKeyset ¤Ùè¡Ñº adLockOptimistic àÊÁͤÃѺ
DS.Open SQLStmt, ConnDB, adOpenKeyset, adLockOptimistic, adCmdText
' ¼ÁÁѹµÔ´ AddNew ÁÒµÑé§áµèãªé DAO áÅéǤÃѺ ... Êèǹ¹Õé¤×Í¡ÒÃãªé INSERT ¹èФÃѺ
DS.AddNew
DS(FieldPK) = CountRec
DS(FieldName) = cmb.Text
DS.Update
' Ê觤èÒ PK ¡ÅѺä»à¾×èͺѹ·Ö¡¢éÍÁÙÅ
VerifyComboBox = CountRec
' ÁÕ¢éÍÁÙÅà´ÔÁÍÂÙèáÅéÇ
Else
' Ê觤èÒ PK ¡ÅѺä»à¾×èͺѹ·Ö¡¢éÍÁÙÅ
VerifyComboBox = DS(FieldPK)
End If
DS.Close: Set DS = Nothing
End Function
' à¤ÅÕÂÃì¢éÍÁÙŵèÒ§æãËÁè
Sub SetupScreen()
' ============= àÊÃÔÁà·¤¹Ô¤¡ÒÃà¤ÅÕÂÃì¤èÒµèÒ§æ¢Í§ Control 㹿ÍÃìÁ ==============
Dim Ctl As Control
' ÊÓËÃѺ Control ·Ø¡æµÑÇ·ÕèÇÒ§á»Ðŧº¹ Form
For Each Ctl In Me
' ¶éÒ Control µÑǹÑé¹Áѹà»ç¹ TextBox ¡ç·Ó¡ÒÃãÊè¤èÒÇèÒ§ãËéÁѹ«èÐ
If TypeOf Ctl Is TextBox Then Ctl.Text = ""
' ¶éÒ Control µÑǹÑé¹Áѹà»ç¹ ComboBox ¡ç·Ó¡ÒÃà¤ÅÕÂÃì¤èÒÇèÒ§ãËéÁѹ«èÐ
If TypeOf Ctl Is ComboBox Then Ctl.Clear
Next ' Control µÑǶѴä»
End Sub
|
Conclusion: ¼Á¡ç¤Ò´ËÇѧàÅç¡æÇèÒ ¤§¾Í·Õè¨Ð·ÓãËé¾Õè¹éͧËÅÒ·èÒ¹ä´éá¹Ç¤Ô´ ä´éÁØÁÁͧá»Å¡æ ãËÁèæ àÍÒäÇéã¹ÍéÍÁ¡Í´ ÍéÍÁ㨠¡Ñ¹ºéÒ§¾ÍÊÁ¤ÇùèФÃѺ ¼ÁµÃÐ˹ѡ´ÕÇèÒá¤è¡ÒÃÊÃéÒ§¤ÇÒÁÊÑÁ¾Ñ¹¸ì¢Í§µÒÃÒ§¢éÍÁÙÅẺ 1 : 1 à¹Õè ¾ÍÁÒŧâ¤é´¨ÃÔ§æÁѹ¡çÇØè¹ÇÒ¡ѹ¾ÍÊÁ¤ÇÃáÅéÇ (ºÒ§¤¹ÍÒ¨¨ÐºÍ¡ÇèÒÁѹÂҡ仫èдéÇ«éÓ) Ãͺ˹éÒ¼Á¨ÐàÍÒµÑÇÍÂèÒ§§Ò¹¨ÃÔ§¢Í§¡ÒÃàºÔ¡¨èÒÂÇÑÊ´ØÊÔé¹à»Å×ͧÁÒà»ç¹á¹Ç·Ò§ãËéªÁ á¹è¹Í¹ÇèÒÁѹ¨Ðµéͧà»ç¹ÅѡɳТͧ¤ÇÒÁÊÑÁ¾Ñ¹¸ìẺ 1 : M ... ÍÂèÒ¾Öè§·é͡ѹ¡è͹ÅèФÃѺ ... ¾Õè¹éͧ
|
|