小编sig*_*gil的帖子

如何构建包含日历范围中每个日期的Access查询?

我有一个activities活动条目表,例如:

ID | Date       | Activity | Participant
---+------------+----------+
1  | 11/30/2011 | Skiing   | Alice
2  | 11/29/2011 | Diving   | Gary
3  | 10/15/2011 | Running  | Therese
Run Code Online (Sandbox Code Playgroud)

对于每个参与者,例如11/29-11/30,我想查询一个给定的日期范围,哪些日子有活动,哪些日子没有任何活动.

Date  |  Activity | Participant
------+-----------+------------
11/29 |           | Alice
11/30 | Skiing    | Alice
11/29 | Diving    | Gary 
11/30 |           | Gary
11/29 |           | Therese
11/30 |           | Therese
Run Code Online (Sandbox Code Playgroud)

我目前的计划是制作allDates一年中所有日期的表,采取笛卡尔积查询cartDateParticipant:

select date,participant from allDates,(select distinct participant from activities) as participants …

sql ms-access

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

如何隐藏ComboBox下拉列中的列?

我正在Excel用户窗体中构建一个ComboBox,从Access表中获取它的行.我想在下拉列表中向用户显示多个文本字段,但是从ComboBox返回的值应该是与用户选择的行关联的ID号(即ID列是绑定列).但我不想向用户显示此ID号.有没有办法在ComboBox的下拉列表中隐藏列,但是仍然要绑定该列?

excel vba excel-vba access-vba

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

将类设置为PublicNotCreatable的潜在后果是什么?

假设我有一个TestClass具有以下定义的类:

Option Explicit

Public x As Variant
Run Code Online (Sandbox Code Playgroud)

我希望在工作簿打开时创建此类的实例,并在其他工作簿事件中使用.所以在ThisWorkbook模块中,我添加:

Public tc As TestClass

Private Sub Workbook_Open()

Set tc = New TestClass
tc.x = "abc"

End Sub
Run Code Online (Sandbox Code Playgroud)

当我编译它时,我收到一个错误:

Private object modules cannot be used in public object modules as 
parameters or returns types for public procedures, as public data 
members, or as fields of public user defined types
Run Code Online (Sandbox Code Playgroud)

我可以通过转到属性窗口TestClass并将Instancing设置为来解决此问题PublicNotCreatable.看起来这并没有影响类的行为或我在这个VBA项目中的各种函数中创建它的本地实例的能力.更改此Instancing设置是否存在任何潜在问题?

excel vba excel-vba

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

如何防止替换注释更改位置和文本大小?

我正在使用iTextSharp将Typewriter注释替换为具有相同内容和位置的文本框,但是一些生成的文本框最终会在不同的位置使用不同的文本大小,尽管看起来它们的数据完全相同hashMap.

问题是,当我在此示例PDF上创建这些新注释,然后在Adobe Acrobat XI中查看PDF时,新文本框会出现以下问题:

  • 它们已经从原始位置(与箭头相邻)移动到页面下方

  • 文字的大小已经改变

  • 右键单击新文本框时,没有可用的属性

我怀疑所有3个问题都是由于我正在创建新文本框的一个潜在问题.

当我检查for中的/Rect键时,它具有与原始键相同的矩形坐标,因此我不明白为什么某些注释最终会被置换.hashMapannotfreeTextAnnot

这是我使用现有Typewriter注释数据创建新Textbox的代码.请注意,您需要设置inputPathoutputPath以PDF的实际位置和目标路径:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTextSharp;
using iTextSharp.text.pdf;
using System.IO;

namespace PDFConverterTester
{
    public class PdfModifierTester
    {
        public void testWithPaths()
        {
            //set to location of test PDF
            string inputPath = @"C:\InputPath\Before Conversion Dummy.pdf";
            //set to destination of new PDF
            string outputPath = @"C:\OutputPath\Before Conversion Dummy.pdf";
            test(inputPath, outputPath);
        }

        public void …
Run Code Online (Sandbox Code Playgroud)

c# pdf itext

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

前置“\\?\”不适用于处理长路径

我正在尝试找到一种解决 Windows 字符限制的方法,该限制不允许复制文件名 >= 260 个字符的文件。根据这篇 MSDN 文章,如果\\?\在文件名前面加上 ,这将绕过文件名长度限制。

我尝试过这个测试:

string source = "\\\\?\\C:\\Users\\xxxx\\Documents\\Visual Studio 2013\\Projects\\PDFConverterTester\\PDFConverterTester_BatchGUI\\bin\\Debug\\folder1\\a.txt";
string dest= "\\\\?\\C:\\Users\\xxxx\\Documents\\Visual Studio 2013\\Projects\\PDFConverterTester\\PDFConverterTester_BatchGUI\\bin\\Debug\\folder2\\a.txt";            
System.IO.File.Copy(source, dest);
Run Code Online (Sandbox Code Playgroud)

但这引发了一个例外:

Illegal characters in path.
Run Code Online (Sandbox Code Playgroud)

我应该以不同的方式应用这个前缀吗?

编辑:我公司的 IT 政策不允许我在没有经过漫长的审核过程的情况下安装任何新软件,这意味着我无法更新到 4.6.2。所以我试图弄清楚如何通过现有的 Visual Studio .NET 4.5 安装中的 Windows API 调用来解决此问题。

.net c# path filepath

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

"无效使用null"用于返回变量的vba函数

我正在尝试编写一个VBA函数,该函数使用SELECT查询从Access表中获取值.这是代码:

Function getTableValue(uniqueID As Long, tableName As String, _ 
idField As String, tableField As String) As Variant

Dim db As Database
Dim rs As Recordset
Dim selectSQL As String

selectSQL = "select * from " & tableName & " where " & idField & "=" & uniqueID

Set db = OpenDatabase(dbPath)
Set rs = db.OpenRecordset(selectSQL)

If rs.RecordCount > 0 Then
    rs.MoveLast
    rs.MoveFirst
    getTableValue = rs.Fields(tableField)
End If

End Function
Run Code Online (Sandbox Code Playgroud)

如果指定的字段tableField是日期/时间类型且字段为空,则getTableValue()返回"无效使用空"错误.我认为让函数返回Variant将允许我返回Null值; 我该怎么做来处理这些空日期?

ms-access vba

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

如何存储可在许多事件调用中使用的对象?

我有一个Worksheet_BeforeDoubleClick事件检查单击的单元格是否包含在Dictionary对象中的数据,如下所示:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target as Range, Cancel as Boolean)

Dim dict as Dictionary
Dim df as New dictFactory

'returns a dictionary populated with all list items
Set dict=df.create

If dict.Exists(Target.Value) Then
 MsgBox "Exists"
Else
 MsgBox "Doesn't exist"
End If

End Sub
Run Code Online (Sandbox Code Playgroud)

问题是这需要在每次单击单元格时创建新的字典.我认为将字典存储在自己的模块中的全局变量中会很好,如下所示:

Global valuesDict As New Dictionary
Run Code Online (Sandbox Code Playgroud)

然后在打开工作簿时填充它:

Private Sub workbook_open()

Dim df as New dictFactory
Set valuesDict=df.create

End Sub
Run Code Online (Sandbox Code Playgroud)

但是我在测试过程中遇到了很多问题,因为有很多条件可以重置全局变量的值(如这里所讨论的).

在重复调用我的BeforeDoubleClick事件的过程中,只要工作簿处于打开状态,如何存储对象以使其值可用?

excel vba excel-vba

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

如何从像IsEmpty()的VBA标准库中重载函数?

我想IsEmpty()在这样的类中创建一个本地版本:

Public Dict As Dictionary

Public Function isEmpty(columnName As Variant) As Boolean
isEmpty = IsEmpty(Dict(columnName))
End Function
Run Code Online (Sandbox Code Playgroud)

这是为了隐藏信息,以便我可以打电话

classInstance.isEmpty("someField")
Run Code Online (Sandbox Code Playgroud)

代替

isEmpty(classInstance.Dict("someField"))
Run Code Online (Sandbox Code Playgroud)

因此不会暴露类的内部数据结构.

但问题是isEmpty()我声明的版本似乎覆盖了对VBA库版本的任何引用IsEmpty(),因为它生成Out of stack错误并导致Excel崩溃.我假设这是因为isEmpty = IsEmpty(...)调用导致无限递归.

有没有办法可以明确地引用IsEmpty()我想在这里调用的标准版本?

excel vba excel-vba

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

获取"此应用未经过验证"的Google表格脚本仅触及我的工作表

我正在处理一个Google表格脚本,我只打算在与.gs文件相关联的同一电子表格中访问数据.似乎我应该有权在我自己的电子表格中运行脚本,但每当我运行一个函数时,我都会得到一条This app isn't verified消息.

我该如何绕过这个?我已经在高级Google服务和API控制台中启用了Google表格API.假设我创建了一个电子表格并创建了一个修改该电子表格的附加组件,我不应该授权它吗?

这是抛出错误的函数:

function getLastRow(){
  ss=SpreadsheetApp.getActiveSpreadsheet();
  var rulesSht=ss.getSheetByName('rules');
  return rulesSht.getLastRow();
}
Run Code Online (Sandbox Code Playgroud)

javascript google-apps-script

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

尝试在 psql 中使用“\i [文件名]”,得到“无效参数”

C:\Users\myname\some path\query.sql使用 Windows 10、Postgres 11。我有一个包含典型 SELECT 查询的文件:

select a.id,m.toagentid,m.maxstart from agent a
left join
mostrecentfromtopair m 
on
a.id=m.fromagentid
Run Code Online (Sandbox Code Playgroud)

当我在psql终端中时,我尝试按如下方式运行此查询:

\i "C:\Users\myname\some path\query.sql"
Run Code Online (Sandbox Code Playgroud)

然后我得到这个错误:

\i: Invalid argument
Run Code Online (Sandbox Code Playgroud)

我应该如何运行这个 .SQL 文件?

postgresql psql

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