标签: ado

Recordset过滤器的问题

我在传统的ASP Classic代码中使用ADO Recordset上的过滤器时遇到了问题,而我正在尝试了解我是否不支持我正在尝试做什么,或者我是否只是做错了.

我有一个Items记录集,它们的状态为1(活动)或0(非活动),以及可选的End_Date.在我的管理用户界面中,我有一个控件来显示所有项目或仅显示应该显示给最终用户的项目:Status = 1 AND ( End_Date is null OR End_Date > Date() )

为了实现这个逻辑,我试过:

rs.Filter = "Status = 1 AND ( End_Date = null OR End_Date > #" & Date() & "# )"
Run Code Online (Sandbox Code Playgroud)

但我明白了

ADODB.Recordset (0x800A0BB9)
Unknown runtime error
Run Code Online (Sandbox Code Playgroud)

经过多次愚弄,似乎ADO不喜欢End_Date条件下的分组parens与AND条件相结合.如果我把parens拿出来,这有效:

rs.Filter = "Status = 1 AND End_Date = null OR End_Date > #" & Date() & "#"
Run Code Online (Sandbox Code Playgroud)

但这只是一个意外 - 它看起来像是按顺序评估过滤条件,所以我得到了我想要的结果.如果我将AND更改为OR,则parens工作:

rs.Filter = "Status = 1 OR ( End_Date = null OR End_Date > #" & Date() …
Run Code Online (Sandbox Code Playgroud)

vbscript ado filter recordset asp-classic

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

如何在包含空格的字段名上对ADO表进行排序?

我正在使用Delphi,但这是一个简单而普遍的问题:

我正在做以下事情:

var
  ArticlesTable: TADOTable;

begin
  ArticlesTable.DisableControls;
  ArticlesTable.Sort := 'CITY';
  ArticlesTable.First;
  while not ArticlesTable.Eof do begin
    ...
    ArticlesTable.Next;
  end;
Run Code Online (Sandbox Code Playgroud)

这非常有效,并且允许我逐个有效地处理记录,并且当它们进入时,CITY字段按顺序递增记录.

但是,现在我想通过"LAST NAME"字段订购,其中包含一个嵌入式空间.但是当我使用声明时:

  ArticlesTable.Sort := 'CITY';
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

  EOleException:  Arguments are of the wrong type, are out of acceptable range, 
                  or are in conflict with one another.
Run Code Online (Sandbox Code Playgroud)

我已经看到了SORT字符串语法的帮助.它表示用逗号分隔多个字段,并在字段之后添加ASC或DESC以对升序或降序进行排序.但它没有说明如果fieldname中有空格怎么办.

我已经尝试将字段名称放在单引号和双引号中,甚至使用#20作为空格字符,但这些不起作用.

我无法更改Microsoft Access数据库上的字段名称,因为还有其他程序我不能使用它依赖它.

我确信必须有一种简单的方法来做到这一点,我不知道.

delphi sorting ms-access ado tadotable

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

为什么使用带有 ASCII 字符集的 ADODB.Stream 将 ä 等特殊字符转换为 a?

我在尝试将 vb6 中的某些变量的内容输出到文本文件中时遇到问题。问题是,当扩展 ASCII 中的特殊字符显示为 \xc3\xa4、\xc3\xbc、\xc3\xa1 时,它会在输出中转换为匹配的基本 ASCII 字符,如 a、u、a。

\n\n

我尝试像 UTF-8 一样导出它,然后正确显示字符,但我需要输出为 ASCII。另外,对我来说看起来很奇怪的是文件名通常可以包含此字符(\xc3\xa4、\xc3\xbc、\xc3\xa1...)而无需替换。

\n\n

这是因为“ASCII”字符集只是基本字符集而不是扩展字符集吗?也许是因为 Windows 中配置的代码页?我尝试过其中的几个(德语、英语),结果相同。

\n\n

这是我正在使用的代码:

\n\n
Set fileStream = New ADODB.Stream\nIf Not fileStream Is Nothing Then\n    inputString = textPreAppend + inputString\n    fileStream.charSet = "ASCII"\n    fileStream.Open\n    fileStream.WriteText inputString\n    fileStream.Flush\n    fileStream.SaveToFile fileName, adSaveCreateOverWrite\n    fileStream.Flush\n    fileStream.Close\nEnd If\nSet fileStream = Nothing\n
Run Code Online (Sandbox Code Playgroud)\n\n

提前致谢!

\n

vb6 ascii ado character-encoding codepages

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

ADODB插入空格

我在经典的asp中调用存储过程

我正在添加我的参数:

set objParam =.CreateParameter("@Param",129,1,"3" ,Request.Form("Param"))
.Parameters.Append objParam
Run Code Online (Sandbox Code Playgroud)

在我这样的SQL中

 @NomCentre varchar(3)
Run Code Online (Sandbox Code Playgroud)

但是当我的数据插入时,我总是有额外的空间来完成我的varchar的长度

示例:"i"变为"i"而"te"变为"te"

有人有一个想法谢谢

sql ado asp-classic

0
推荐指数
1
解决办法
192
查看次数

在Big MDB文件中使用Select SQL Command时速度很慢

我正在使用500 MB大小的访问2000 mdb文件,当我Select * From MyTable Where Phone=7744111花费太长时间,超过30秒才能获得结果.

如何提高搜索性能?(我正在使用vb6和ado 2.8)

sql vb6 ms-access ado

0
推荐指数
1
解决办法
464
查看次数

NVL函数出错,是否有类似NVL的等效函数

下面的代码是用 VBScript 编写的。但是该行Set rs = cmd.Execute抛出错误,指出NVL未定义。那么你能建议一个相当于“NVL”的东西吗?

        Option Explicit

        Dim conn, cmd, rs
         Dim clauses(34), i
    Dim xlApp, xlBook
    Dim tempDate,LenDate


    Set conn = CreateObject("ADODB.Connection")
    With conn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=""D:\AravoVB\GE_Wing_To_Wing_Report - Copy.xlsx"";" & _
        "Extended Properties=""Excel 12.0;HDR=Yes"""
    .Open
    End With
    tempDate="[Business Process ID],"
    For i = 0 To 34
    clauses(i) = "[Task" & i + 1 & " Start Date] > [Task" & i + 2 & " Start Date]"
    tempDate=tempDate & "NVL([Task" …
Run Code Online (Sandbox Code Playgroud)

vbscript excel vba ado adodb

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

ADO连接一个或四个?

我正在尝试连接到mdb(访问2000)我的应用程序有1个主屏幕,有4个按钮.每个按钮都会打开一个新表格.

我需要在所有4个子表单上访问这个数据库,我是否必须为每个表单添加一个ADOConnection?我可以在主窗体上建立连接吗?或者还有更好的方法吗?

delphi ms-access ado delphi-xe2

0
推荐指数
1
解决办法
1202
查看次数

SQL语法错误

我想从Delphi 2007运行一个简单的SQL.

我用AdoQuery.我的表有一列id,数据类型是int(自动增量).

我的问题是如果我执行

select * from comlist
Run Code Online (Sandbox Code Playgroud)

它没有问题,它运行.但是,如果我在SQL上定义一个字段就像

select compname from comlist
Run Code Online (Sandbox Code Playgroud)

德尔福抱怨道

ado:找不到字段'id'

Compname列存在于表中.

我的桌子上有以下字段:

id int
creationdate datetime
compid nvarcahr(50)
complocation nvarchar(50)
serial nvarchar(50) 
compname nvarchar(50)
Run Code Online (Sandbox Code Playgroud)

我有这个代码的错误:

ado.Close;
ado.SQL.Clear;
ado.SQL.Add('SELECT   compname  FROM comlist');
ado.Open;
Run Code Online (Sandbox Code Playgroud)

我对此代码没有错误:

ado.Close;
ado.SQL.Clear;
ado.SQL.Add('SELECT * FROM comlist');
ado.Open;
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

sql delphi ado tadoquery

0
推荐指数
1
解决办法
1133
查看次数

如何更快地执行此代码?

在我的结算表单中,我有一个按钮,可将datagridview数据插入两个访问数据库.我使用此代码插入第一个数据库:

    Private Sub inserttotblbill()
    Dim billcon As OleDbConnection = New OleDbConnection(constr)
    Dim billcmd As New OleDbCommand

    For i = 0 To dgv.Rows.Count - 1
        billcon.Open()
        billcmd.Connection = billcon
        billcmd.CommandText = ("insert into tblbill(inum,snum,idate,cname,iname,iprc,iqnt,ipaid,itotal,iuser,itype) " _
                & " values('" _
                & TextBox1.Text _
                & "','" _
                & TextBox6.Text _
                & "','" _
                & TextBox2.Text _
                & "','" _
                & TextBox3.Text _
                & "','" _
                & dgv.Rows(i).Cells(0).Value _
                & "','" _
                & dgv.Rows(i).Cells(1).Value _
                & "','" _
                & dgv.Rows(i).Cells(2).Value _
                & "','" …
Run Code Online (Sandbox Code Playgroud)

vb.net oledb ms-access ado

0
推荐指数
1
解决办法
74
查看次数

在 Delphi 中通过 TADOCommand 插入数据

我有一个包含四个字段的表,其中一个字段是主键。当我运行以下命令时:

var
  iAffectedRows: integer;
begin
  ADOCommand1.CommandText := 'insert into table_1(Field_1, Field_2, Field_3)   values(:A_Field_1, :A_Field_2, :A_Field_3)';      

  ADOCommand1.Parameters.FindParam('A_Field_1').Value := '100';
  ADOCommand1.Parameters.FindParam('A_Field_2').Value := '200';
  ADOCommand1.Parameters.FindParam('A_Field_3').Value := '300';

  ADOCommand1.Execute(iAffectedRows);
end;
Run Code Online (Sandbox Code Playgroud)

结果是:

在此处输入图片说明

所述Field_1值是0。

(这个结果是由于运行命令:ADOCommand1.Execute(iAffectedRows)

但是有了这个命令,一切都是正确的:ADOCommand1.Execute()

这个问题有解决方案吗?

delphi ado delphi-xe5

0
推荐指数
1
解决办法
1616
查看次数

从Hack中保护Delphi连接字符串

我们有一个使用tadoconnection连接sql server数据库的delphi应用程序问题是当我们在运行exe文件时打开资源黑客时它清楚地显示了连接字符串,任何人都可以连接到我们的服务器

下面显示的示例代码描述了问题 在此输入图像描述

sql-server delphi connection-string ado

0
推荐指数
1
解决办法
716
查看次数

如何转到ado.locate(Delphi)结果中的最后一条记录

我通过以下代码找到了一些记录:

ADOQuery1.Locate('field1',ADOQuery2.FieldByName('field2').Value,[])  
Run Code Online (Sandbox Code Playgroud)

如何进入最后一条记录?

delphi ado

0
推荐指数
1
解决办法
2084
查看次数

"System.OutOfMemoryException"同时使用ado.net检索700k记录C#

我第一次将表中的数据填充到列表中然后我清除列表以从不同的表中选择不同的数据,所以我希望从内存中释放第一个列表,因为我将越来越多地获得新数据.

我试过了:

List.Dispose(); 
List.Clear();
List = null;
GC.Collect(); 
Run Code Online (Sandbox Code Playgroud)

但记忆力充沛.

在实体框架中我想出来并添加了.AsNoTracking()它并且它工作并且内存被清除

但我必须使用ADO.Net.

.net c# ado

-1
推荐指数
1
解决办法
73
查看次数