小编sig*_*gil的帖子

重新查询时如何避免进入第一条记录?

在 Access 2010 中制作一个表单。我正在尝试制作一个移动到下一条记录的按钮(如果它在最后,则是第一个),但是因为我想考虑其他用户对已发生的数据集的更新同时,我会在转到下一条记录之前重新查询表单。

我正在使用以下代码,改编自这篇 SO 帖子

Private Sub NextRec_Click()

Dim currentID As Long

currentID = Me.id.Value


'Here is where the requery brings the form back to the first record
Me.Requery


With Me.RecordsetClone
    .FindFirst "id=" & currentID
    If Not .NoMatch Then
       If Me.Dirty Then
          Me.Dirty = False
       End If
       Me.Bookmark = .Bookmark
    End If
End With

If Me.CurrentRecord < Me.Recordset.RecordCount Then
    DoCmd.GoToRecord , , acNext
Else
    DoCmd.GoToRecord , , acFirst
End If


End Sub
Run Code Online (Sandbox Code Playgroud)

它工作正常,除了.requery导致表单在返回到当前记录然后返回到下一条记录之前短暂返回到第一条记录。我不希望它这样做 - …

ms-access vba recordset

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

在DataTable已有数据后设置自动编号

我有以下代码将自动编号列添加到DataTable:

public void AddAutoIncrementColumn(DataTable dt)
{
   DataColumn column = new DataColumn();
   column.DataType = System.Type.GetType("System.Int32");
   column.AutoIncrement = true;
   column.AutoIncrementSeed = 0;
   column.AutoIncrementStep = 1;
   dt.Columns.Add(column);
}
Run Code Online (Sandbox Code Playgroud)

但是,对于表中已有的所有行,此值将为空; 似乎只对添加此列后添加的新行触发AutoIncrement.有没有办法为已存在的行设置自动编号值?

c# datatable

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

如何在SSMS结果中搜索字符串/子字符串?

这似乎很简单,但由于某种原因,我找不到任何关于如何做到这一点.我正在使用SQL Server Management Studio 2012,并且我有一组从SELECT查询返回的结果,比如说select a,b from x.如何在列中搜索b子字符串?在Access中,我将单击该列并键入Ctrl + F,但在SSMS中似乎仅用于搜索SQL本身,而不是结果.如何搜索我的结果?我知道我可以修改我的查询只返回结果,例如:

select a,b from x where b like '*hello*'
Run Code Online (Sandbox Code Playgroud)

但我希望得到所有返回的行,而不仅仅是那一行.

更新:我得到的答案是关于如何构建一个只选择我正在寻找的行的查询,正如我上面指定的那样,这不是我正在寻找的.我希望返回所有行,并且我想在SSMS界面的搜索结果中查看以找到所需的值.原因是我希望在没有它们的其他行的上下文中看到这些值.

sql-server ssms ssms-2012

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

如何在SELECT INTO后保留数据类型?

我有一个T1包含一些日期/时间字段的表.我在这个表上用UNION查询组合了几个查询,并T2在union上使用SELECT INTO 创建了一个新表,如下所示:

SELECT * INTO T2
FROM (select * from query1_T1
union
select * from query2_T1)
Run Code Online (Sandbox Code Playgroud)

问题是query1_T1为某些日期字段替换空字符串常量,这导致T2具有文本字段而不是日期/时间字段.为了显示:

query1_T1:
select myUDF(someTextField),"" as newDateField from T1

query2_T1:
select anotherUDF(someTextField),oldDateField from T1
Run Code Online (Sandbox Code Playgroud)

哪里oldDateField是日期/时间.

有没有一种方法可以构建SELECT INTO或更改query1_T1,以便我仍然可以从查询中获得相同的结果但newDateField最终会作为日期/时间?

sql ms-access

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

成功注册了COM DLL,但不能使用类方法

我使用regasm.exe注册了一个COM DLL ,现在我正在尝试编写一个使用DLL中的类的VBA脚本.DLL是ExcelDataReaderLibrary.dll.在C#源代码中,该类描述如下(包括来自此库的代码):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data;
using Excel;

namespace ExcelDataReaderLibrary
{
    public class ExcelDataReader
    {
        public void readSheet(string filePath,string sheetName,string outPath)
        {
            // code for method here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的assembly.cs文件包括以下内容:

[assembly: ComVisible(true)]

[assembly: Guid("b1e78f8f-9ab0-46d8-beac-b843656aacdb")]
Run Code Online (Sandbox Code Playgroud)

当我打开VBA编辑器并转到References时,我看到了一个参考ExcelDataReaderLibrary.请注意,与此引用关联的文件是ExcelDataReaderLibrary.tlb,而不是ExcelDataReaderLibrary.dll.检查此引用后,我想ExcelDataReader在VBA中创建和使用对象,如下所示:

Sub x()    
 Dim xyz As New ExcelDataReaderLibrary.ExcelDataReader
 xyz.readSheet "c:\mypath\testfile.xlsx", "Sheet1", "c:\outputPath"
End Sub
Run Code Online (Sandbox Code Playgroud)

该对象已成功创建,但出现readSheet此错误:

Automation …
Run Code Online (Sandbox Code Playgroud)

c# com dll vba

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

设置基于vlookup的下拉值

我有一个工作表UserEntry2列,BlockAddress.我想基于Validation具有相同列名的另一个工作表验证这两个.Validation表格上的数据如下:

Block | Address
---------------
001   | 101
001   | 101.3
001A  | 35
020-1 | 203
020-1 | 203.5
020-1 | 204.1

...
Run Code Online (Sandbox Code Playgroud)

大约有11000个不同的块,大约40000个块/地址对.

我的目标是,如果用户Block在工作UserEntry表的列中输入值,则列中的下拉选项Address将更改为与之对应Block.

我尝试使用此公式的自定义验证:

=VLOOKUP(UserEntry!A2,Validation!A2:B40000)

但那评估错误.我在各种论坛中看到了一些涉及设置命名范围的解决方案,然后让VLOOKUP()搜索适当的命名范围,但似乎这不起作用,因为我必须创建11000个命名范围.

如何使验证下拉列表Address包含与给定值对应的所有Block值?

validation excel

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

使用Web服务迭代Sharepoint列表项的属性,获取"对象引用未设置为对象的实例"

我正在使用C#来调用Sharepoint Web服务.我想获得一个Sharepoint列表,然后对列表中的每个项目,将其属性写入控制台.当我遍历属性时,我不断得到"对象引用未设置为对象的实例" foreach.代码如下:

class Program
    {
        static void Main(string[] args)
        {
            try
            {                 
                cSharpTest_service.Lists lists = new cSharpTest_service.Lists();
                lists.Url = "http://wsssandbox/sites/cSharp/_vti_bin/lists.asmx";
                lists.Credentials = System.Net.CredentialCache.DefaultCredentials;
                System.Xml.XmlNode listData = lists.GetListItems("cSharpTestList", "", null, null, "", null, "");



                foreach (System.Xml.XmlNode iterateNode in listData)
                {

                    Console.WriteLine("--NODE--");
                    System.Xml.XmlAttributeCollection attrs = iterateNode.Attributes;
                    foreach (System.Xml.XmlAttribute attr in attrs)
                    {
                        Console.WriteLine("Name:");
                        Console.WriteLine(attr.Name);
                        Console.WriteLine("Value:");
                        Console.WriteLine(attr.Value);
                    }

                }
                Console.ReadLine();

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.ReadLine();
            }


        }
      }
Run Code Online (Sandbox Code Playgroud)

我认为这是抛出异常,因为某些属性是Null针对某些列表项的.但我无法弄清楚如何检查属性是否为foreach迭代的一部分.

c# sharepoint web-services

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

删除行时,防止Excel删除公式中的引用

我有一个工作表的Excel工作簿Sheet1Sheet2,其中Sheet2有一个是指在价值公式Sheet1如下:

+-----------+------------+
|  address  |   value    |
+-----------+------------+
| Sheet1!A1 | 1          |
| Sheet1!B1 | 3          |
| Sheet1!C1 | 5          |
| Sheet2!A1 | =Sheet1!A1 |
| Sheet2!B1 | =Sheet1!B1 |
| Sheet2!C1 | =Sheet1!C1 |
+-----------+------------+
Run Code Online (Sandbox Code Playgroud)

如果我删除第1行Sheet1,使用以下C#interop:

thisRange["a1"].EntireRow.Delete()
Run Code Online (Sandbox Code Playgroud)

然后所有公式都设置为错误,例如=Sheet1!#REF!.

删除行后,有没有办法保留公式中的现有引用?我想我可以将所有公式复制到一个数组中,然后将它们重新复制到工作表中,但我最好还是希望它们不会在第一时间消失.

c# excel excel-formula

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

设置git别名,但是然后调用它会给'命令找不到'

我想在git中设置一个别名来计算存储库中的总行数,所以我进入Git Bash并输入:

git config --global alias.linecount 'ls-files -z | xargs -0 wc -l'
Run Code Online (Sandbox Code Playgroud)

输入命令后,没有错误消息.然后我进入了

linecount
Run Code Online (Sandbox Code Playgroud)

并收到此错误消息:

sh: linecount: command not found
Run Code Online (Sandbox Code Playgroud)

我应该设置一个别名吗?

git bash alias

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

PdfArray.remove() 并未删除所有注释

我想从 PDF 中删除所有注释。我正在使用这段代码:

void removeAnnotations(string inputPath,string outputPath)
        {
            PdfReader pdfReader = new PdfReader(inputPath);
            PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(outputPath, FileMode.Create));
            PdfDictionary pageDict = pdfReader.GetPageN(1);
            PdfArray annotArray = pageDict.GetAsArray(PdfName.ANNOTS);
            for (int i = 0; i < annotArray.Size; i++)
            {
                annotArray.Remove(i);   
            }
            pdfStamper.Close();
        }
Run Code Online (Sandbox Code Playgroud)

当我第一次创建时annotArray,它有 217 个项目。在 的 for 循环之后annotArray.Remove(),它有 108 个项目,我仍然可以在 生成的 PDF 上看到一些标注和线条outputPath。我暂时不清楚其余项目有什么共同点,以及为什么它们被 跳过annotArray.Remove()。如何删除所有注释?

c# pdf itext

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