1.如果需要对一个表的所有字段需要进行操作,那么在定义的时候,可以用如下的定义方式可以一目了然
Private Type mNenCho_Item
N01_F_KBN As String 'ファイル区分
N02_REC_KBN As String 'レコード区分
。。。 。。。
N24_ADD_CD As String '集計先コード
End Type
2.在SQL文中对字符类型的数据的操作,用如下函数
strSql = strSql & "," & gs_AddQuo(vstrSysDate)
'*************************************************************
' 文字列をクォーテーションで囲む。
' 内容: 引数に渡された文字列をクォーテーションで囲む。
'
文字列中にクォーテーションが含まれる場合は2個に増やす。
' 戻り値:Variant(NULL文字があるのでVariant型を使用)
'*************************************************************
Public Function gs_AddQuo(ByVal vvarExp As Variant) As String
gs_AddQuo = "'" & Replace(vvarExp, "'", "''") & "'"
End Function
3.对多个函数的操作,比较好的写法。
blnFlg = mb_Del_NenCho(strType)
If blnFlg = True Then
blnFlg = mb_Edt_NenCho(strType, strPath & strFName)
End If
If blnFlg = True Then
G_MST.CommitTrans
Else
G_MST.RollbackTrans
End If
4.SQl文
条件: 本人情報マスタが存在する年末調整データの内、勤務所番号(控除先)が未設定または会社マスタに存在しないデータから出力する
表的关系是 :
会社マスタ(M_KAISYA)的主键是勤務所番号(控除先)(KAISYA_CD)
本人情報マスタ(M_HONNIN)的主键是加入者番号(EMPLOYEE_NO)
年末調整データ(T_NENCHO_MED)的主键是加入者番号(EMPLOYEE_NO)
SQL文如下:
strSql = ""
strSql = strSql & "SELECT"
strSql = strSql & " A.EMPLOYEE_NO"
strSql = strSql & " ,A.NAME"
strSql = strSql & " ,A.SEIBETU"
strSql = strSql & " ,A.PRE_YEAR"
strSql = strSql & " ,A.KINMUSHO_NO"
strSql = strSql & " FROM T_NENCHO_MED A,M_HONNIN H"
strSql = strSql & " WHERE"
strSql = strSql & " H.EMPLOYEE_NO=A.EMPLOYEE_NO AND"
strSql = strSql & " NOT EXISTS (SELECT 1 FROM M_KAISYA K WHERE K.KAISYA_CD=A.KINMUSHO_NO)"
这其中有个隐含内容 因为勤務所番号(控除先)是会社マスタ的主键,所以它不可能为空,那么如果年末調整データ表中的勤務所番号(控除先)が未設定,那么这条数据肯定也在会社マスタ里不存在,所以实际上勤務所番号(控除先)が未設定和会社マスタに存在しないデータ这是统一的一个条件.
5. (+)在右边,保证了左边表中的所有记录都会被取到,相当于一部分(part A)是select a.col1,b.col2,a.col3 from a,b where a.col1=b.col2取出的这部分记录;另一部分(part B)是a表中不满足上面条件剩下的所有记录(包括2种,一种是记录中a.col1为空,另一种是a.col1取了b.col2未出现过的值)都会在表里面显示,这部分select出来的所有与b表相关的字段均为空。所以左连接查询得到的记录条数应该与a表一致