我有一个类似于下面的代码片段,我想将其重构为两个不同的函数,每个函数都有自己的连接(为了更好的维护):
Dim Conn, Sql, RS
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnString
Sql = SELECT * FROM CLIENTS
Set RS = Conn.Execute(sql)
//'Do something with Clients
Set RS = Nothing
Sql = SELECT * FROM DEALERS
Set RS = Conn.Execute(sql)
//'Do something with Dealers
Set RS = Nothing
Conn.Close
Set Conn = Nothing
Run Code Online (Sandbox Code Playgroud)
是否有两个函数(例如 GetClients 和 GetDealers)分别打开和关闭它们自己的连接会对性能产生重大影响,与仅打开和关闭单个连接相反,如上图所示?如果是这样,您将如何重构代码?
我想根据某些条件阻止 ADORecordset 的滚动。
例如,做这样的事情会很方便:
procedure TfrmMain.qryCenyBeforeScroll(DataSet: TDataSet);
begin
if not (condition) then
qryCeny.DoNotScroll; //Just the idea
end;
Run Code Online (Sandbox Code Playgroud)
这该怎么做?
我有一个更新表中值的 SQL Server 2008 存储过程。我想让存储过程返回一个整数值,指示更新成功(返回 0)或不成功(返回错误号)。通过 ADO 和 VBA 实现这一目标的最佳方法是什么?这是我的一些执行更新的简化形式的代码......我只是不确定如何取回存储过程的返回值
Public Function DoUpdate(employeeID as integer, firstName as string, lastname as string) as integer
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim activeConnectionString As String
activeConnectionString = GetActiveConnectionString()
Set cnn = New ADODB.Connection
cnn.ConnectionString = activeConnectionString
cnn.CursorLocation = adUseClient
cnn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "uspUpdateEmployeeName"
cmd.NamedParameters = True
cmd.Parameters("@EmployeeID").Value = employeeID
cmd.Parameters("@FirstName").Value = firstName
cmd.Parameters("@LastName").Value = lastName
cmd.Execute
'Unsure of how …Run Code Online (Sandbox Code Playgroud) 我有一个Access数据库,我正在使用传递查询来返回AS400表中的记录.连接字符串和传递查询工作正常,但现在我正在尝试将pt查询的结果填充到db中的本地表中,并且我的代码超时.这是我第一次尝试ADO,所以我放弃了我的代码"我不是100%肯定我在做什么!".你能看看这个,看看有什么明显的东西我做错了吗?任何方向将不胜感激.先感谢您.
Sub mod_ADODBConnect()
Const NewTableName = "MyNewTable"
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim db As DAO.Database
Dim sSQL1 As String
Dim sSQL2 As String
sSQL1 = "SELECT ITMNUM, ITMDS, ITPKDS, MJCMCD, SBCMCD, STATUS, PRITIN, OGEXDT from PDBLLIB007.BLPMST07"
sSQL2 = "INSERT INTO ' & NewTableName & ' SELECT [" & sSQL1 & "].* from [" & sSQL1 & "]"
Set cn = New ADODB.Connection
cn.Open "Driver={Client Access ODBC Driver (32-bit)};" & _
"System=DC007; Uid=XXXXX; Pwd=XXXXXX; MgDSN=0; ConnType=2;" & …Run Code Online (Sandbox Code Playgroud) 另一个网站使用POST方法向我发送数据.
我想获取这些数据并将其插入数据库.
经过网上的一些研究,我得出结论,ADODB.Stream应该为我做的工作.
我没有获取二进制数据的问题Request.TotalBytes.使用以下代码,我没有收到错误,但它也没有保存数据.所以我必须对ADODB Stream做错事.
tot_bytes = Request.TotalBytes
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Mode = 3
BinaryStream.Type = 1
BinaryStream.Open
gBinaryData = BinaryStream.Write(tot_bytes)
BinaryStream.Close
Set BinaryStream = Nothing
SQL = "INSERT INTO STATUSES (StatusMessage, StatusDateEntered) VALUES ('"& gBinaryData &"', '"& FormatDateMySQL(NOW) &"')"
Set objAddC = objConn.execute(SQL)
Run Code Online (Sandbox Code Playgroud)
.
Following a successful subscription, Facebook will proceed to call your endpoint every time that there are changes (to the chosen fields or connections). For each update, it will make an HTTP POST …Run Code Online (Sandbox Code Playgroud) 如何在VBA/ADO中获取RecordSet的其他行?
我正在使用下面的代码,但这只给了我第一行。例如,记录集第三行的第二项怎么样?
Debug.Print recordSet.Fields(0)
Run Code Online (Sandbox Code Playgroud) 我在 VB6 中有一个旧的慢程序,它使用 ADO 在许多调用中运行许多 sql 查询。它需要太多小时。我想测试是否在一个查询中发送所有查询(其中大多数只是更新或插入)以节省网络和调用时间。我该如何实现这一点,并建议这是否可以节省时间并提高性能?
qry = "Update table1 Set col1 = 'eerere' Where 1=1"
qry = qry & vbCrLf & " AND MyID = " & MyID & vbCrLf
ExecSQL qry, DBCon, adAsyncExecute
qry = "Insert Into TableMain"
qry = qry & "Select col1,col2,col3 from Table2 Where 1=1"
qry = qry & vbCrLf & " AND MyID = " & MyID & vbCrLf
ExecSQL qry, DBCon, adAsyncExecute
qry = "Update table5 Set col1 = 'eerere' Where 1=1" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将列添加到 VB6 中的 ADO 记录集。我只想在表的末尾添加 4 列。这是一个我们经常使用的表,但我们经常删除其中的所有数据,并用我们想要的下一个信息重新填充它,基本上只是将它用作临时保存数据的一种手段。
我发现因为它是 ADO,所以我应该能够使用以下内容:
with rs
.fields.append "column name", "enum dataType"
end with
Run Code Online (Sandbox Code Playgroud)
从阅读和实验来看,似乎必须关闭记录集才能添加列。
这是我的代码:
rs.Open "MeterReads", DataEnvironment7.cnPTracker, adOpenStatic, adLockOptimistic, adCmdTable
' 2019-11-4 Adding in a section to accomadate for days to depeletion
If gbEnableD2D Then
bExists = False
With rs
For Each fField In rs.Fields
If UCase(fField.Name) = UCase("eddB") Then
bExists = True
Exit For
End If
Next
If bExists = False Then
.Close
.Fields.Append "eddB", adDate
.Fields.Append "eddC", adDate
.Fields.Append "eddM", adDate
.Fields.Append …Run Code Online (Sandbox Code Playgroud) 我需要修改一些用经典ASP(VBscript)编写的遗留代码.
我有一行设置数据库连接,如下所示:
set m_conn=OpenConn()
Run Code Online (Sandbox Code Playgroud)
我相信该OpenConn()函数在某个DLL中.这是坏消息,因为我们找不到该dll的源代码.所以,我一直在努力替换这个功能.这是我到目前为止:
function OpenConn()
dim conn
set conn = server.CreateObject("adodb.connection")
conn.open "XXXXconnection-stringXXXXX"
OpenConn = conn
end function
Run Code Online (Sandbox Code Playgroud)
当我尝试运行原始行set m_conn=OpenConn()(第50行)时,我得到一个ASP错误:
Microsoft VBScript runtime error '800a01a8'
Object required: '[string: "Provider=SQLOLEDB.1;"]'
/path/to/include.asp, line 50
Run Code Online (Sandbox Code Playgroud)
我不太清楚这种语法应该如何工作.通常,我在C#中工作,但是当我需要在ASP中执行这样的操作时,我会使用这样的语法:
set conn = server.createobject("adodb.conection")
conn.activeconnection = "connectionstring"
conn.execute "sql"
set conn = nothing
Run Code Online (Sandbox Code Playgroud)
无论如何,我正在寻找正确的语法,OpenConn()以便set m_conn=OpenConn()正常工作.
谢谢你的帮助.
ado ×10
asp-classic ×4
ms-access ×2
sql-server ×2
vb6 ×2
vba ×2
access-vba ×1
delphi ×1
recordset ×1
return-value ×1
sql ×1
vbscript ×1