标签: ado

如何使用链接表从Access执行存储过程

我有一个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".

ms-access stored-procedures ado access-vba

5
推荐指数
1
解决办法
2万
查看次数

我如何从SQLite检索数据到VB6?

我使用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)

sqlite vb6 odbc ado connect

5
推荐指数
1
解决办法
7356
查看次数

Excel-Access ADO更新值

我试图从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)

sql excel ms-access vba ado

5
推荐指数
1
解决办法
4063
查看次数

C++导入和使用ADO

我有两个简短的问题,涉及在C++项目中导入和使用ADO.我对任何形式的ADO都没有经验.

首先,目前我的程序的数据库方面只需要在Windows上运行.是否足以测试在运行ADO特定代码之前是否定义了_WIN32或_WIN64,还是有更好的方法?我使用Visual C++ 2010 Express作为我的编译器.

其次,我正在关注此页面作为我的向导.我已经为msado15.dll包含了#import语句.#import指令用红色加下划线,当我将鼠标悬停在它上面时收到错误"...无法打开源文件路径/ to/msado15.tlh",并且我复制到源代码中的任何ADO内容都保持红色下划线.我已经检查了错误消息中列出的目录,msado15.tlh就在那里,如果这很重要的话.此外,该程序编译(它执行后崩溃,但这是我将单独诊断的其他东西).

我对这为什么会发生这种情况一无所知.任何帮助或建议将不胜感激.

c++ ado

5
推荐指数
1
解决办法
8794
查看次数

使用变量追加字段参数

Cross发布在这里:

http://www.vbforums.com/showthread.php?696163-Use-variable-to-append-field-parameter&p=4264077#post4264077

我使用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])

sql parameters ado append

5
推荐指数
1
解决办法
223
查看次数

使用Delphi 6处理Unicode字符

我有一个在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)

delphi unicode ado tadoquery delphi-6

5
推荐指数
1
解决办法
5558
查看次数

Exporting data from a DBGrid to Excel

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.

delphi excel ado delphi-7

5
推荐指数
1
解决办法
3万
查看次数

紧凑的Access数据库

我试图压缩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 ms-access ado delphi-xe4

5
推荐指数
1
解决办法
3310
查看次数

TAdoQuery.ParseSql在xe4中不起作用

我在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)

delphi ado delphi-7 delphi-xe4

5
推荐指数
1
解决办法
1748
查看次数

使用64位Excel连接到32位Oracle客户端

我正在尝试使用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)
  • Excel是64位的MS Office Professional Plus 2010
  • Windows是7 Enterprise,Service Pack 1,64位
  • Oracle客户端是11.2.0 32位(我认为)
  • Oracle服务器是Oracle Database 11g企业版11.2.0.3.0版 - 64位生产版

现在......我已经在网上搜索,无法弄清问题是什么,但我最好的猜测是我正在使用的驱动程序有32位与64位冲突.在我让公司的IT部门尝试为我安装东西之前,我正试图了解我应该采取什么样的方法.如果MS Office是Oracle客户端必须是64位吗?或者我只需要64位Oracle数据访问组件?我尝试了一堆不同的连接字符串但没有成功,包括使用MSDAORA代替OraOLEDB.Oracle ......

oracle oledb excel vba ado

5
推荐指数
1
解决办法
1万
查看次数