小编Chr*_*ell的帖子

链接访问数据库"记录已被其他用户更改"

我正在维护一个链接到MSSQL2000数据库的多用户Access 2000 DB,而不是我编写的.

数据库设计很差,所以你必须忍受我.

在"客户"表单上有一个"Customer_ID"字段,默认情况下需要获取下一个可用的客户ID,但用户可以选择使用现有客户ID覆盖此选项.

现在,Customer_ID字段不是Customer表的PK.它也不是唯一的.

如果客户拨打两次提交作业,该表将获得两条记录,每条记录具有相同的客户信息和相同的客户ID.

如果用户创建新票证,Access会快速查找下一个可用的客户ID并将其填入.但它不会保存记录.显然是一个问题 - 两个用户编辑必须跟踪彼此的工作,这样他们就不会欺骗客户ID.

所以我想修改"新记录"按钮,以便在创建新票据后立即保存票证.

问题是,当我测试更改时,我得到"此记录已被其他用户更改,因为您开始编辑它".

绝对没有DB上的其他用户."其他用户"可能是我被迫保存的.

有任何想法吗?

sql ms-access linked-tables

15
推荐指数
4
解决办法
4万
查看次数

如何在没有全局变量的情况下保留数据?

我习惯脚本语言.PHP,Javascript等,我写了一些相对简单的Java和C#应用程序.这是一个我一再需要答案的问题,我想我不是唯一一个.

假设我使用的是Javascript.

我有一个由GUI调用的函数A(),它检索一些值.

函数B(),也由GUI调用,需要该值,但函数B()将被调用任意次数,即A()之后的任意长度.

我不希望A()每次重新计算值.

一个示例是登录凭据.A()要求输入用户名,B()使用该值在每次调用时追加到日志中.

为此我可能只使用一个全局变量.

现在,C#.没有全局变量!我该怎么做?

编辑: 享受答案,但有很多"尽量不使用全局"的评论.我明白了,但我想听听这个要求的替代模式.

c# global-variables

8
推荐指数
2
解决办法
7272
查看次数

如何在List <T>中找到未定义字符串的索引

我的理解是,如果我想获取列表中项目的ID,我可以这样做:

private static void a()
{
    List<string> list = new List<string> {"Box", "Gate", "Car"};
    Predicate<string> predicate = new Predicate<string>(getBoxId);
    int boxId = list.FindIndex(predicate);
}

private static bool getBoxId(string item)
{
    return (item == "box");
}
Run Code Online (Sandbox Code Playgroud)

但是如果我想让比较动态呢?因此,我不想检查item =="box",而是将用户输入的字符串传递给委托,并检查item == searchString.

c# delegates predicate list

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

Recordset仅返回1000条记录

我正在使用LDAP查询执行ADODB recordset.open()命令以从我的Active Directory获取所有用户.

大约有2600个用户,但我只回来了1000个用户.

我试过没有运气就改变了记录集的PageSize和MaxRecords属性.

没有多余的东西,这就是代码的样子(我已经将连接细节设为通用):

ADODB.Connection conn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();
rs.MaxRecords = 10000;
rs.PageSize = 10000;
conn.Open("Active Directory Provider","","",0);
string query = "SELECT cn FROM 'LDAP://OU=User Accounts,OU=TopLevel,DC=domainName,DC=local' where samAccountName = '*'"

rs.Open(query, conn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, -1);
Run Code Online (Sandbox Code Playgroud)

它肯定只返回1000条记录,(我已经确认),我可以很好地访问它们.

如果它有帮助,我没有使用DirectorySearcher的原因是因为它与此相比速度太慢.

c# adodb active-directory recordset

6
推荐指数
1
解决办法
2130
查看次数

在VBA中读取撤消历史记录

我在Word 2003中有一个相当简单的VBA,它将文档的字体更改为"eco font"(长篇故事),然后打开"打印"对话框.

当用户点击"取消"或"确定"时,代码会执行"撤消"以还原更改.

问题是,有时当我按"确定"打印文档时,需要撤消两个操作('字体更改'和'更新字段').我似乎无法预测何时会发生这种情况.

有没有办法读取Word的撤消缓冲区中的最后一项?这样我就可以继续按下撤消,直到字体更改完成.

编辑: 最终代码(缩减):

ActiveDocument.Range.Bookmarks.Add ("_tempEcoUndoStart_") 
ActiveDocument.Content.Font.Name = "Nanonymus Eco Sans" 
Dialogs(wdDialogFilePrint).Show 
While ActiveDocument.Bookmarks.Exists("_tempEcoUndoStart_") 
    ActiveDocument.Undo 
Wend
Run Code Online (Sandbox Code Playgroud)

vba ms-word undo

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

我可以在Office 2003 VBA编辑器中关闭内联语法检查吗?

任何在Office 2003中使用VBA的人都会知道,每次点击一行时都会进行语法检查,这是非常令人沮丧的.

例如,如果我开始编写一行代码,我可能会去

For Each application In
Run Code Online (Sandbox Code Playgroud)

然后想想"垃圾,应用程序集合叫什么?" 所以我会点击"向上翻页"找到它,并获得(在这种情况下)"编译错误".

我能把它关掉吗?

vba

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

两个函数,或一个具有不同参数的函数?

这是一个非常通用的"最佳实践"问题,但这是一个例子.

假设我有一个电影编目应用程序.我想让我的用户有机会为他们的概要/评级信息指定IMDb或Metacritic.

我这样做:

if (preferredSupplier == "imdb"){
      getIMDbRating(movieName);
}else{
      getMetacriticRating(movieName);
}
Run Code Online (Sandbox Code Playgroud)

或这个:

getRating(movieName, preferredSupplier);
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二个,但这意味着函数必须遵循非常不同的逻辑,具体取决于第二个参数的值(例如,Metacritic可能需要屏幕抓取,其中IMDb可能有一个很好的API).

或者我应该结合它们?在getRating()中充当包装函数,并根据第二个参数的值调用getIMDbRating()或getMetacriticRating().

parameters function

4
推荐指数
1
解决办法
321
查看次数

找出哪个类调用了一个方法

有没有办法,在C#中,一个类或方法知道谁(即什么类/方法)调用它?

例如,我可能有

class a{
   public void test(){
         b temp = new b();
         string output = temp.run();
   }
}

class b{
   public string run(){
        **CODE HERE**
   }
}
Run Code Online (Sandbox Code Playgroud)

输出:"由'a'类的'test'方法调用."

.net c# class

4
推荐指数
1
解决办法
453
查看次数

VBScript SQL清理

警惕Jeff Atwood的" 浴室墙代码 "帖子,我认为为VBScript提供值得信赖的SQL清理功能会很有用,类似于PHP的mysql_real_escape_string()功能.

那么,如何使用VBScript正确清理数据输入到SQL查询?

sql vbscript sanitization

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

将ListBox.SelectedObjectCollection转换为ListBox.ObjectCollection?

是否可以将ListBox.SelectedObjectCollection转换为C#中的ListBox.ObjectCollection?如果是这样,我该怎么办呢?

c# collections casting listboxitems

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

我是否需要将参数清理为SQL存储过程?

我正在写一个ASP(经典)Javascript的快速网站.

我正在使用带参数的预准备语句.没什么特别的.

我的问题是我是否需要清理参数的输入(如果是这样,是否有像PHP这样的本机函数?),或者我使用参数而不是连接内联SQL这一事实让我安全吗?

//Set up the command to run the GetMigrationDate stored procedure.
var command = new ActiveXObject("ADODB.Command");
command.CommandText = "exec myStoredProc ?";

//Set up parameters
command.Parameters.Append(command.CreateParameter("name", 200, 1, 255));
command.Parameters("name") = name;

//Set up result recordset
var results = new ActiveXObject("ADODB.Recordset");

//Run command
results.open(command);
Run Code Online (Sandbox Code Playgroud)

[编辑]存储过程是这样的:

@name varchar(255)

select * from customers where name = @name
Run Code Online (Sandbox Code Playgroud)

sql parameters stored-procedures sql-injection

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