【CSDN】【做了一个VB ATCIVEX组件(DLL),用来进行帐户透支验证操作,请大家帮我看看代码逻辑对不对】

drillmaster 2003-10-15 10:53:20
Option Explicit
Private strServerName As String
Private conCheckAccount As Connection
Private rsCheckAccount As Recordset
Public strError As String
Private strSql As String

Private Sub getSQLServerName()
If GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName") = "" Then
strServerName = InputBox("请输入数据库服务器名称")
SaveSetting "OnlineBankingDB", "SQL Server Name", "ServerName", strServerName
Else
strServerName = GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName")
End If
End Sub

Private Sub connectionSQLServer()
Set conCheckAccount = New Connection
Set rsCheckAccount = New Recordset

On Error GoTo errorhandler
Call getSQLServerName

With conCheckAccount
.Provider = "sqloledb"
.ConnectionString = "user id=sa;" & _
"password=;" & _
"data source=" & strServerName & _
";initial catalog=OnlineBankingDB"
.Open
End With

Exit Sub
errorhandler:
MsgBox Err.Number & Err.Source & Err.Description
End Sub

Private Function Credit(strAccountTypeID As String, mCash As Double, mAccountBalance As Double) As Boolean
If rsCheckAccount.State = 1 Then rsCheckAccount.Close
rsCheckAccount.CursorLocation = adUseClient
strSql = "select * from AccountType"
rsCheckAccount.Open strSql, conCheckAccount, adOpenDynamic, adLockOptimistic
If rsCheckAccount.RecordCount > 0 Then
rsCheckAccount.MoveFirst
Do While Not rsCheckAccount.EOF
If rsCheckAccount("cAccountTypeID") = strAccountTypeID Then
If mCash > mAccountBalance Then '
If mCash - mAccountBalance < rsCheckAccount("mMaximumBalance") Then
strError = "警告,你已经进行了帐户透支,本次透支额为:" & CStr(mAccountBalance - mCash) & ",请及时存款"
Credit = True
Exit Do
Else
strError = "警告,帐户透支超过系统上限(" & rsCheckAccount("mMaximumBalance") & "),帐户取款操作被系统终止,请及时存款"
Credit = False
Exit Do
End If
Else
Credit = True
Exit Do
End If
End If
rsCheckAccount.MoveNext
Loop
Else
strError = "帐号非法"
Credit = False
End If
End Function

Public Function validate(strAccountNumber As String, mCash As Double) As Boolean
If strServerName = "" Then
getSQLServerName
End If
Call connectionSQLServer
If rsCheckAccount.State = 1 Then rsCheckAccount.Close
rsCheckAccount.CursorLocation = adUseClient
strSql = "select * from Customer where cAccountNumber ='" & strAccountNumber & "'"
rsCheckAccount.Open strSql, conCheckAccount, adOpenDynamic, adLockOptimistic
If rsCheckAccount.RecordCount > 0 Then
rsCheckAccount.MoveFirst
validate = Credit(rsCheckAccount("cAccountTypeID"), mCash, rsCheckAccount("mAccountBalance"))
Else
strError = "帐号非法"
validate = False
End If
End Function
...全文
32 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gelim 2003-10-16
  • 打赏
  • 举报
回复
你自己先调试一下,有什么错再拿出来看看!
online 2003-10-16
  • 打赏
  • 举报
回复
你自己先调试一下,有什么错再拿出来看看!
hacker007 2003-10-16
  • 打赏
  • 举报
回复
Option Explicit
Private strServerName As String
Private conCheckAccount As Connection
Private rsCheckAccount As Recordset
Public strError As String
Private strSql As String

Private Sub getSQLServerName()
If GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName") = "" Then
strServerName = InputBox("请输入数据库服务器名称")
SaveSetting "OnlineBankingDB", "SQL Server Name", "ServerName", strServerName
Else
strServerName = GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName")
End If
End Sub

Private Sub connectionSQLServer()
Set conCheckAccount = New Connection
Set rsCheckAccount = New Recordset

On Error GoTo errorhandler
Call getSQLServerName

With conCheckAccount
.Provider = "sqloledb"
.ConnectionString = "user id=sa;" & _
"password=;" & _
"data source=" & strServerName & _
";initial catalog=OnlineBankingDB"
.Open
End With

Exit Sub
errorhandler:
MsgBox Err.Number & Err.Source & Err.Description
End Sub

Private Function Credit(strAccountTypeID As String, mCash As Currency, mAccountBalance As Currency) As Boolean
If rsCheckAccount.State = 1 Then rsCheckAccount.Close
rsCheckAccount.CursorLocation = adUseClient
strSql = "select * from AccountType"
rsCheckAccount.Open strSql, conCheckAccount, adOpenDynamic, adLockOptimistic
If rsCheckAccount.RecordCount > 0 Then
rsCheckAccount.MoveFirst
Do While Not rsCheckAccount.EOF
If rsCheckAccount("cAccountTypeID") = strAccountTypeID Then
If mCash > mAccountBalance Then '
If mCash - mAccountBalance < rsCheckAccount("mMaximumBalance") Then
strError = "警告,你已经进行了帐户透支,本次透支额为:" & CStr(mAccountBalance - mCash) & ",请及时存款"
Credit = True
Exit Do
Else
strError = "警告,帐户透支超过系统上限(" & rsCheckAccount("mMaximumBalance") & "),帐户取款操作被系统终止,请及时存款"
Credit = False
Exit Do
End If
Else
Credit = True
Exit Do
End If
End If
rsCheckAccount.MoveNext
Loop
Else
strError = "帐号非法"
Credit = False
End If
End Function

Public Function validate(strAccountNumber As String, mCash As Currency) As Boolean
If strServerName = "" Then
getSQLServerName
End If
Call connectionSQLServer
If rsCheckAccount.State = 1 Then rsCheckAccount.Close
rsCheckAccount.CursorLocation = adUseClient
strSql = "select * from Customer where cAccountNumber ='" & strAccountNumber & "'"
rsCheckAccount.Open strSql, conCheckAccount, adOpenDynamic, adLockOptimistic
If rsCheckAccount.RecordCount > 0 Then
rsCheckAccount.MoveFirst
validate = Credit(rsCheckAccount("cAccountTypeID"), mCash, rsCheckAccount("mAccountBalance"))
Else
strError = "帐号非法"
validate = False
End If
End Function
hacker007 2003-10-16
  • 打赏
  • 举报
回复
Option Explicit
Private strServerName As String
Private conCheckAccount As Connection
Private rsCheckAccount As Recordset
Public strError As String
Private strSql As String

Private Sub getSQLServerName()
If GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName") = "" Then
strServerName = InputBox("请输入数据库服务器名称")
SaveSetting "OnlineBankingDB", "SQL Server Name", "ServerName", strServerName
Else
strServerName = GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName")
End If
End Sub

Private Sub connectionSQLServer()
Set conCheckAccount = New Connection
Set rsCheckAccount = New Recordset

On Error GoTo errorhandler
Call getSQLServerName

With conCheckAccount
.Provider = "sqloledb"
.ConnectionString = "user id=sa;" & _
"password=;" & _
"data source=" & strServerName & _
";initial catalog=OnlineBankingDB"
.Open
End With

Exit Sub
errorhandler:
MsgBox Err.Number & Err.Source & Err.Description
End Sub

Private Function Credit(strAccountTypeID As String, mCash As Double, mAccountBalance As Double) As Boolean
If rsCheckAccount.State = 1 Then rsCheckAccount.Close
rsCheckAccount.CursorLocation = adUseClient
strSql = "select * from AccountType"
rsCheckAccount.Open strSql, conCheckAccount, adOpenDynamic, adLockOptimistic
If rsCheckAccount.RecordCount > 0 Then
rsCheckAccount.MoveFirst
Do While Not rsCheckAccount.EOF
If rsCheckAccount("cAccountTypeID") = strAccountTypeID Then
If mCash > mAccountBalance Then '
If mCash - mAccountBalance < rsCheckAccount("mMaximumBalance") Then
strError = "警告,你已经进行了帐户透支,本次透支额为:" & CStr(mAccountBalance - mCash) & ",请及时存款"
Credit = True
Exit Do
Else
strError = "警告,帐户透支超过系统上限(" & rsCheckAccount("mMaximumBalance") & "),帐户取款操作被系统终止,请及时存款"
Credit = False
Exit Do
End If
Else
Credit = True
Exit Do
End If
End If
rsCheckAccount.MoveNext
Loop
Else
strError = "帐号非法"
Credit = False
End If
End Function

Public Function validate(strAccountNumber As String, mCash As Double) As Boolean
If strServerName = "" Then
getSQLServerName
End If
Call connectionSQLServer
If rsCheckAccount.State = 1 Then rsCheckAccount.Close
rsCheckAccount.CursorLocation = adUseClient
strSql = "select * from Customer where cAccountNumber ='" & strAccountNumber & "'"
rsCheckAccount.Open strSql, conCheckAccount, adOpenDynamic, adLockOptimistic
If rsCheckAccount.RecordCount > 0 Then
rsCheckAccount.MoveFirst
validate = Credit(rsCheckAccount("cAccountTypeID"), mCash, rsCheckAccount("mAccountBalance"))
Else
strError = "帐号非法"
validate = False
End If
End Function

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧