长时间观看者第一次海报.我正在研究一个带有Excel前端的数据库应用程序.因此我使用VBA访问MySQL数据库.我正在使用的驱动程序是ODBC驱动程序(Windows),我有一个有效的数据库连接,因为许多其他查询运行良好.
我要做的是从一系列SQL语句中返回结果,而不是试图将它们全部组合成一个大型语句(这可能会起作用但很难维护/理解).我已将标志添加FLAG_MULTI_STATEMENTS = 67108864到连接字符串,以抑制驱动程序语法错误.
但现在我运行以下内容:
queryDB.Open SQLquery, conn
Run Code Online (Sandbox Code Playgroud)
在recordset (queryDB)保持与没有明显的错误关闭.可以在此处找到sql语句.
我可能会产生没有返回给VBA的错误,所以在这里提供任何帮助都会非常感激.
注意:sql语句工作,因为我可以粘贴该语句phpMyAdmin,它返回正确的(非空)结果.我不知道这些陈述是否具体是问题,但可能是一般使用CREATE TEMPORARY TABLE ...或使用多种陈述.
另外我猜驱动程序可能正在尝试为每个sql语句返回一个结果,而VBA只是获取第一个或者其他东西......
编辑:sql语句供将来参考.
CREATE TEMPORARY TABLE tmpOrders AS
SELECT
o.customerName,
SUM(o.Sales) AS Sales,
SUM(TotalFobCost + TotalLandedCost + TotalLocalCost + TotalCmtCost) AS TotalCost,
YEAR(o.deliveryDate) AS YEAR,
MONTH(o.deliveryDate) AS MONTH
FROM devere_costing.orders_fixed_extras AS o
WHERE o.orderApproved = TRUE
AND o.orderCanceled = FALSE
AND o.deliveryDate BETWEEN '2014-01-01' AND '2014-03-31'
GROUP BY customerName, YEAR, MONTH
ORDER BY YEAR …Run Code Online (Sandbox Code Playgroud) 这两种性能方面有什么区别吗?
-- eliminate duplicates using UNION
SELECT col1,col2,col3 FROM Table1
UNION SELECT col1,col2,col3 FROM Table2
UNION SELECT col1,col2,col3 FROM Table3
UNION SELECT col1,col2,col3 FROM Table4
UNION SELECT col1,col2,col3 FROM Table5
UNION SELECT col1,col2,col3 FROM Table6
UNION SELECT col1,col2,col3 FROM Table7
UNION SELECT col1,col2,col3 FROM Table8
-- eliminate duplicates using DISTINCT
SELECT DISTINCT * FROM
(
SELECT col1,col2,col3 FROM Table1
UNION ALL SELECT col1,col2,col3 FROM Table2
UNION ALL SELECT col1,col2,col3 FROM Table3
UNION ALL SELECT col1,col2,col3 FROM Table4
UNION ALL SELECT …Run Code Online (Sandbox Code Playgroud) 我有一个类,它根据提供的XSD验证提供的XML文档.在类中,我调用该XDocument.Validate方法来执行验证,并收到以下错误:
' http://www.example.com/enrollrequest1:requested-payment-date '元素无效 - 根据数据类型' http:// www,值'2015-05-28T00:00:00'无效. w3.org/2001/XMLSchema:date ' - 字符串'2015-05-28T00:00:00'不是有效的XsdDateTime值.
元素的值已经从.NET DateTime变量设置,最终将其设置为包含时间部分,因为在.NET中没有等效的xs:date类型.
元素的值是从通用模块设置的,因此我无法选择元素并自定义设置它们的值.开发人员向我发送.NET DateTime类型的值,我的程序又调用该XElemet.SetValue(value)方法来设置它.
此外,XSD文件是我无法控制的.因此,修改XSD不是一种选择.
有没有办法知道导致错误的XElement的预期类型是什么?一旦我知道了,我就可以相应地对我的代码进行类型转换或自定义.因此,例如在这种情况下,如果我知道预期的类型是xs:date(而不是xs:datetime),我可以简单地对输入值进行类型转换.
这是我的验证器类,如果这有帮助:
Option Strict On
Imports System.XML.Schema
Public Class XmlSchemaValidator
Public ReadOnly Errors As New List(Of String)
Private XDoc As XDocument
Private Schemas As XmlSchemaSet
Public Sub New(ByVal doc As XDocument, ByVal schemaUri As String, ByVal targetNamespace As String)
Me.XDoc = doc
Me.Schemas = New XmlSchemaSet
Me.Schemas.Add(targetNamespace, schemaUri)
End Sub
Public …Run Code Online (Sandbox Code Playgroud) 我正在阅读如何使用On Error Resume Next,我正在试图找出该行将适用于该程序的时间.在Microsoft站点上,我发现这句话:"An On Error Resume Next语句在调用另一个过程时变为非活动状态." 这到底是什么意思?什么被认为是一个程序?
我问,因为我在我的程序中使用了这行,但是我不希望它出现Resume Next所有发生的运行时错误,只是下一行中的明显错误.
代码:Dim zRange As Range
Dim zRange As Range
Call FilterTableFor(fieldNameColumn, Array("baseunitprice", "burden", "MTLBURRATE", "PurPoint", "Vendornum"))
On Error Resume Next
Set zRange = commentsColumnRange.SpecialCells(xlCellTypeVisible)
zRange.Formula = "target"
Call FilterTableFor(fieldNameColumn)
Run Code Online (Sandbox Code Playgroud)
我也发现(并且已知有一段时间)On Error或者GoTo行被认为是编码不好.有没有Try-Catch我可以用于这样的线?
我在想这样的事情:
Dim zRange As Range
Call FilterTableFor(fieldNameColumn, Array("baseunitprice", "burden", "MTLBURRATE", "PurPoint", "Vendornum"))
Try
Set zRange = commentsColumnRange.SpecialCells(xlCellTypeVisible)
zRange.Formula = "target"
Catch()
Call FilterTableFor(fieldNameColumn)
Run Code Online (Sandbox Code Playgroud)
我甚至没有做任何事情,因为我觉得不需要.
谢谢你的时间.
说Table1和我有两张桌子Table2
表格1
???????????
? ID ? RN ?
???????????
? 11 ? 1 ?
? 12 ? 2 ?
? 13 ? 3 ?
? 14 ? 4 ?
? 15 ? 5 ?
? 16 ? 6 ?
? 17 ? 7 ?
? 18 ? 8 ?
? 19 ? 9 ?
? 10 ? 10 ?
???????????
Run Code Online (Sandbox Code Playgroud)
表2
??????????????????????
? ID ? FromRN ? ToRN ?
??????????????????????
? 1 ? 1 ? 3 ? …Run Code Online (Sandbox Code Playgroud) 我成功创建了一个服务名字对象作为我的WCF服务的客户端.但是我无法在绰号上调用任何方法.
在WCF服务端,我有一个名为TestMethod的虚拟方法,如下所示:
Public Function TestMethod(ByVal TestValue As String) As String Implements ICustomerService.TestMethod
Return "You said.... " & TestValue
End Function
Run Code Online (Sandbox Code Playgroud)
以下代码在Excel中创建Moniker.
Public Sub WCFMexMonkierDemo()
' Create a string for the service moniker including the content of the WSDL contract file
Dim mexMonikerString As String
mexMonikerString = "service:mexAddress='http://localhost/CustomerService.svc/mex'" & _
", address='http://localhost/CustomerService.svc'" & _
", binding=CustomerServices.CustomerService" & _
", bindingNamespace='http://tempuri.org/'" & _
", contract=ICustomerService" & _
", contractNamespace='http://tempuri.org/'"
' Create the service moniker object
Dim mexMoniker, result
Set mexMoniker = GetObject(mexMonikerString) …Run Code Online (Sandbox Code Playgroud) 我有一个ContentEditable设置为TRUE的DIV.在其中有几个跨度,ContentEditable设置为FALSE.
我捕获BackSpace键,以便如果光标下的元素是<span>我可以删除它.
问题是它只与奇数跨度交替工作.
因此,例如,使用下面的html代码,将光标放在DIV中的文本末尾,并一直按退格键直到div的开头.观察它将选择/删除第一个跨度,然后离开第二个跨度,然后选择/删除第三个跨度,然后离开第四个跨度,依此类推.
此行为仅适用于Internet Explorer.它在Firefox上完全按预期工作.
我应该如何在Internet Explorer中使行为一致?
以下html代码可用于重现行为:
var EditableDiv = document.getElementById('EditableDiv');
EditableDiv.onkeydown = function(event) {
var ignoreKey;
var key = event.keyCode || event.charCode;
if (!window.getSelection) return;
var selection = window.getSelection();
var focusNode = selection.focusNode,
anchorNode = selection.anchorNode;
if (key == 8) { //backspace
if (!selection.isCollapsed) {
if (focusNode.nodeName == 'SPAN' || anchorNode.nodeName == 'SPAN') {
anchorNode.parentNode.removeChild(anchorNode);
ignoreKey = true;
}
} else if (anchorNode.previousSibling && anchorNode.previousSibling.nodeName == 'SPAN' && selection.anchorOffset <= 1) {
SelectText(event, anchorNode.previousSibling);
ignoreKey …Run Code Online (Sandbox Code Playgroud)当我使用excel打开.txt文件(记事本文件)时,工作表名称是默认打开的记事本文件的文件名.因此,打开不同的记事本文件时,工作表名称会有所不同.下游代码需要此工作表名称是固定的.无论如何都要将工作表名称更改为固定名称,例如"sheet1".顺便说一下,不能使用代号,因为在打开文件中使用数据的宏不是另一个工作簿.
谢谢!
我有一个VB程序有两种形式,我编写了每种形式的表单加载.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MessageBox.Show("I AM FORM 1")
End Sub
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MessageBox.Show("I AM FORM 2")
End Sub
Run Code Online (Sandbox Code Playgroud)
这是我如何切换Form1和Form2,我使用了一个按钮.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Hide()
Form1.Show()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Hide()
Form2.Show()
End Sub
Run Code Online (Sandbox Code Playgroud)
但每次我切换表单时,表单加载事件只会触发一次.我的代码有问题吗?我猜到了Me.Hide()只会隐藏上一个表格而不是完全关闭它.我希望能够关闭以前的表单,以便当我再次打开它时,表单加载事件将再次触发.
我正在使用 dotnet core webapi 的默认 swagger 实现。每当版本号从右上角的“选择定义”下拉列表中更改时,我希望显示实际版本号而不是模板。
因此,例如,当从下拉列表中选择 v2 时,它应该显示为这样
而不是这个,
有什么线索可以做到这一点吗?