我有一个Access 2003数据库,通过ODBC连接到SQL Server 2008框.SQL Server中的表在Access中作为链接表连接.我在SQL Server上有一个存储过程,我试图通过ADO代码执行.我遇到的问题是Access似乎无法找到该过程.在Access中我需要做什么才能执行此存储过程?一些事实......
有问题的存储过程接受一个整数参数.存储过程返回一个记录集,我希望将其用作ListBox的数据源.
这是Access中的ADO代码...
Private Sub LoadUserCaseList(userID As Integer)
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "uspGetUserCaseSummaryList"
Dim par As New ADODB.Parameter
Set par = cmd.CreateParameter("userID", adInteger)
cmd.Parameters.Append par
cmd.Parameters("userID") = userID
Dim rs As ADODB.Recordset
Set rs = cmd.Execute()
lstUserCases.Recordset = rs
End Sub
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"microsoft jet数据库引擎无法找到输入表或查询"uspGetUserCaseSummaryList".
我使用SQLite3 ODBC驱动程序作为我的连接字符串,
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim rs As New ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER=SQLite3 ODBC Driver;Database=test.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"
conn.Open
rs.Open "select * from Artists", conn, adOpenDynamic, adLockOptimistic
MsgBox rs.Fields(0)
Run Code Online (Sandbox Code Playgroud) 我试图从excel中的值更新Access中的表,但每次运行代码时它都会创建新行而不是更新已存在的行,任何想法为什么?我是ADO的新手,所以任何建议都非常感谢
Private Sub SelectMaster()
Dim db As New ADODB.Connection
Dim connectionstring As String
Dim rs1 As Recordset
Dim ws As Worksheet
Set ws = ActiveSheet
connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\Users\Giannis\Desktop\Test.mdb;"
db.Open connectionstring
Set rs1 = New ADODB.Recordset
rs1.Open "Men", db, adOpenKeyset, adLockOptimistic, adCmdTable
r = 6
Do While Len(Range("L" & r).Formula) > 0
With rs1
.AddNew
.Fields("Eva").Value = ws.Range("L" & r).Value
.Update
End With
r = r + 1
Loop
rs1.Close
'close database
db.Close
'Clean up
Set …Run Code Online (Sandbox Code Playgroud) 我有两个简短的问题,涉及在C++项目中导入和使用ADO.我对任何形式的ADO都没有经验.
首先,目前我的程序的数据库方面只需要在Windows上运行.是否足以测试在运行ADO特定代码之前是否定义了_WIN32或_WIN64,还是有更好的方法?我使用Visual C++ 2010 Express作为我的编译器.
其次,我正在关注此页面作为我的向导.我已经为msado15.dll包含了#import语句.#import指令用红色加下划线,当我将鼠标悬停在它上面时收到错误"...无法打开源文件路径/ to/msado15.tlh",并且我复制到源代码中的任何ADO内容都保持红色下划线.我已经检查了错误消息中列出的目录,msado15.tlh就在那里,如果这很重要的话.此外,该程序编译(它执行后崩溃,但这是我将单独诊断的其他东西).
我对这为什么会发生这种情况一无所知.任何帮助或建议将不胜感激.
Cross发布在这里:
我使用ADO从MS Access检索数据到Excel,我想在我的查询的SELECT部分附加一个Iif语句.我的SQL字符串存储在文本文件中,任何参数都通过ADO追加.
我知道如何在WHERE子句中追加参数,甚至可以在SELECT语句中附加参数,如下所示:
SELECT BA, Iif(QA=[@somestring],[@somestring2], [@somestring3])
FROM myData
WHERE BA = 'some person'
Run Code Online (Sandbox Code Playgroud)
但我想要完成的是将占位符[@somestring]转换为可变长度的Iif语句,例如:
SELECT BA, [@somestring]
Run Code Online (Sandbox Code Playgroud)
占位符转换为我使用函数构建的字符串:
Iif(QA='Jon Doe', 'Jon', Iif(QA='Jane Doe', 'Jane', 'Nobody')).
Run Code Online (Sandbox Code Playgroud)
现在,我得到的结果是我传递给填充整个字段的参数的文字字符串.因此,Iif语句实际上是为每条记录写出来的,而不是由SQL进行评估.
我正在尝试做什么,或者SQL是否需要在初始命令中预定义的Iif语句的字段?
即,Iif(QA = [@ somestring],[@ sometstring2],[@ somestring3])
我有一个在Delphi 6中开发的轮询应用程序.它读取文件,根据规范解析文件,执行验证并上传到数据库(SQL Server 2008 Express Edition)
我们必须为具有双字节字符集(DBCS)的操作系统提供支持,例如日语操作系统.因此,我们将SQL Server中的数据库字段从varchar更改为nvarchar.
轮询在使用DBCS的操作系统中工作正常.如果系统区域设置设置为日语/中文/韩语且操作系统具有相应的语言包,则它也可以成功用于非DBCS操作系统.但是,如果Locale设置为english,则数据库包含双字节字符的垃圾字符.
我进行了一些测试但未能确定解决方案.
例如,如果我使用TStringList 从UTF-8文件读取并将其保存到另一个文件,则保存Unicode数据.但是,如果我使用文件的内容使用TADOQuery组件运行更新查询,则会显示垃圾字符.该数据库还包含垃圾字符.
PFB示例代码:
var
stlTemp : TStringList;
qry : TADOQuery;
stQuery : string;
begin
stlTemp := TStringList.Create;
qry := TADOQuery.Create(nil);
stlTemp.LoadFromFile('D:\DelphiUnicode\unicode.txt');
//stlTemp.SaveToFile('D:\DelphiUnicode\1.txt'); // This works. Even though
//the stlTemp.Strings[0] contains junk characters if seen in watch
stQuery := 'UPDATE dbo.receivers SET company = ' + QuotedStr(stlTemp.Strings[0]) +
' WHERE receiver_cd = N' + QuotedStr('Receiver');
//company is a nvarchar field in the database
qry.Connection := ADOConnection1;
with …Run Code Online (Sandbox Code Playgroud) I wanted to know if anyone ones a way that I can export data from a DBGrid to Excel ? I am using Delphi 7 , Excel 2007 and ADO .
Any help will be appreciated.
我试图压缩Microsoft Access数据库,但下面显示的代码不起作用.
procedure TForm1.Disconnect1Click(Sender: TObject);
begin
ADODataSet1.Active := False;
ADOTable1.Active := False;
ADODataSet1.Connection := nil;
DataSource1.Enabled := False;
ADOConnection1.Connected := False;
JetEngine1.Disconnect;
end;
function DatabaseCompact(const sdbName: WideString): boolean;
{ Compact ADO mdb disconnected database. }
var
iJetEngine: TJetEngine; { Jet Engine }
iTempDatabase: WideString; { TEMP database }
iTempConn: WideString; { Connection string }
const
iProvider = 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=';
begin
Result := False;
iTempDatabase := ExtractFileDir(sdbName) + 'TEMP' + ExtractFileName(sdbName);
iTempConn := iProvider + iTempDatabase;
if FileExists(iTempDatabase) then
DeleteFile(iTempDatabase); …Run Code Online (Sandbox Code Playgroud) 我在Delphi 7中有一个项目,我TAdoQuery.ParseSql();用来加载参数.现在我在XE4中编译它,参数类型有时是错误的.这真的是ftInteger创造了ftSmallint.我该怎么做才能解决这个问题?我的数据库是SQL Server 2008 R2.
表定义:
CREATE TABLE [dbo].[tblTest](
[sysId] [int] IDENTITY(1,1) NOT NULL,
[Code] [nvarchar](50) NOT NULL,
[Name] [nvarchar](500) NOT NULL,
CONSTRAINT [PK_tblTest]
PRIMARY KEY CLUSTERED ( [sysId] ASC )
WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON )
ON [PRIMARY] )
ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
样本数据:
INSERT INTO tblTest ( Code, Name ) VALUES ( 'a1', 'name1' )
Run Code Online (Sandbox Code Playgroud)
德尔福代码:
ADOQuery.SQL.Text := 'SELECT * FROM tblTest …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用VBA中的此连接字符串将Excel连接到Oracle:
dim cn As New ADODB.Connection
cn.Open "Provider=OraOLEDB.Oracle;Data Source=source;User Id=userid;Password=pwd;"
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
Run-time error '3706':
Provider cannot be found. It may not be properly installed.
Run Code Online (Sandbox Code Playgroud)
相关参考文献:
Microsoft ActiveX Data Objects 6.1 Library
OraOLEDB 1.0 Type Library
Run Code Online (Sandbox Code Playgroud)
现在......我已经在网上搜索,无法弄清问题是什么,但我最好的猜测是我正在使用的驱动程序有32位与64位冲突.在我让公司的IT部门尝试为我安装东西之前,我正试图了解我应该采取什么样的方法.如果MS Office是Oracle客户端必须是64位吗?或者我只需要64位Oracle数据访问组件?我尝试了一堆不同的连接字符串但没有成功,包括使用MSDAORA代替OraOLEDB.Oracle ......