我知道之前已经在这里问了类似的问题,但我不确定它们是否真正解决了我的问题,除非我误解了它们.
我今天早上一直在处理一个应用程序而且没有任何问题构建或重建解决方案,但是在吃完午餐然后回来之后(我打开程序),我突然无法构建它,因为它是返回3个错误,我之前没遇到过的错误.
错误1:
无法嵌入程序集'office'中的互操作类型,因为它缺少'ImportedFromTypeLib'属性或'PrimaryInteropAssembly'属性.
错误2:
无法在程序集'office'中嵌入互操作类型,因为它缺少'Guid'属性
错误3:
无法加载引用的库'C:\ WINDOWS\assembly\GAC_MSIL\Office\15.0.0.0__71e9bce111e9429c\Office.dll':系统找不到指定的文件.C:\ WINDOWS \装配\ GAC_MSIL \办公室\ 15.0.0.0__71e9bce111e9429c\Office.dll
是什么导致这些错误突然出现?
签入项目属性>参考>添加> COM后,我可以看到引用了Office 15.0对象库.那我该怎么办?应用程序打开时,它们似乎很奇怪吗?
在我的表格上,我有3个entry控件。我正在尝试使用以下验证规则来验证“年龄”控件:
输入的数字不能超过3位
无法输入小数点(。)
无法输入连字符(-)
为此,我将控件的'TextChanged'属性设置为
TextChanged="OnAgeTextChanged"
Run Code Online (Sandbox Code Playgroud)
我的OnAgeTextChanged方法是:
private void OnAgeTextChanged(object sender, TextChangedEventArgs e)
{
var entry = (Entry)sender;
try
{
if (entry.Text.Length > 3)
{
string entryText = entry.Text;
entry.TextChanged -= OnAgeTextChanged;
entry.Text = e.OldTextValue;
entry.TextChanged += OnAgeTextChanged;
}
string strName = entry.Text;
if (strName.Contains(".") || strName.Contains("-"))
{
strName = strName.Replace(".", "").Replace("-", "");
entry.Text = strName;
}
}
catch(Exception ex)
{
Console.WriteLine("Exception caught: {0}", ex);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果满足if条件,则该事件将被循环多次,从而导致应用程序运行缓慢。
例如,如果我输入我的年龄为1234,它将多次遍历代码,因此会有延迟,每次更改文本时延迟都会增加。
在没有多次调用事件的情况下,我还能通过什么其他方式来实现此验证?
编辑
更新代码以删除TextChanged控件上的触发器,然后在方法末尾重新分配该触发器之后,它仍会循环多次,并且每次按下键时循环次数都会增加。
进入控制 xaml …
我正在尝试使用此代码从FTP服务器检索文件。
private class FtpTask extends AsyncTask<Void, Void, Long> {
protected Long doInBackground(Void... args) {
FTPClient FtpClient = new FTPClient();
int reply;
try {
FtpClient.connect(ftpServer);
FtpClient.login(ftpUser, ftpPass);
reply = FtpClient.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
String remoteFileName = "ACPlus.ZIP";
String localFile = context.getFilesDir() + "/ACPLUS.ZIP";
// Delete local file first
File file = new File(localFile);
if(file.exists()) {
file.delete();
}
FtpClient.changeWorkingDirectory("/" + ftpFolder);
FtpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
FtpClient.enterLocalPassiveMode();
OutputStream outputStream = null;
boolean success = false;
try {
outputStream = new BufferedOutputStream(new FileOutputStream(localFile));
success = FtpClient.retrieveFile(remoteFileName, outputStream); …Run Code Online (Sandbox Code Playgroud) 我正在研究一个当前已迁移到Visual Studio 2015的项目。我刚刚遇到了一个问题,到目前为止我不知道该如何处理。在一系列继承的类中,如下所示:
Public Class ControlA
Public Event CustomEvent(sender As Object, e As CustomEventArgs)
End Class
Public Class BaseForm
Public WithEvents C As ControlA
End Class
Public Class MiddleForm
Inherits BaseForm
Private Sub C_CustomEvent(sender As Object, e As CustomEventArgs) Handles C.CustomEvent
'do something
End Sub
End Class
Public Class FinalForm
Inherits MiddleForm
Private Sub C_CustomEvent(sender As Object, e As CustomEventArgs) Handles C.CustomEvent
'do something elese
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
最“外部”类中的事件处理程序(在本例中为显示给用户的表单)将执行应做的操作并停止事件。基类中的处理程序没有被调用。
在VS2010中一切正常。
任何人都有类似的问题,可以给个提示吗?
编辑
稍作更新:当我AddHandler在两个类中都使用时,一切正常。如果使用Handles- 定义了子项,则如上所述将其中断。
有没有办法在数据库中创建0 or 1to0 or 1关系?
例如,假设我有一张经理表和一张艺术家表。一个经理只能管理一个艺人,一个艺人只能有一个经理。但是,经理可以没有艺人(即寻找艺人来管理),艺人可能没有经纪人。
有没有办法做到这一点?在任一表中创建外键只会创建1 to many关系。
每个人似乎都讨厌DateTime价值观.
在我的项目中,我有一个SQL SELECT查询来查找匹配参数值的数据库中的结果.
我的代码是:
Dim where As String = "WHERE [Supp_Code] = @scode " & _
"AND [DateFrom] = @datfrom " & _
"AND [DateTo] = @datto " & _
"AND [Comm_Code] = @ccode " & _
"AND [Customer_Code] = @custcode "
Dim sql As String = "SELECT [Comm_Code], [AqYear] FROM [Acquisition Commission] "
sql &= where & " ORDER BY [AqYear] ASC"
Dim cmd As New OleDb.OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("@scode", cmbSupp.Text.Trim)
cmd.Parameters.AddWithValue("@datfrom", datFrom.Value)
cmd.Parameters.AddWithValue("@datto", datTo.Value)
cmd.Parameters.AddWithValue("@ccode", …Run Code Online (Sandbox Code Playgroud) 我在程序中编写了导出到 Excel 的函数,这也与导入程序一致。
导入程序正在运行一些验证检查,但其中一些检查失败,因为 Excel 工作表将它们格式化为 MM/dd/yyyy,但大多数检查都存储为 dd/MM/yyyy。
查看我的导出程序后,我可以看到在导出之前,网格中的日期格式均正确为 dd/MM/yyyy,因此问题不在这里。
然而,当打开导出的 Excel 文件时,我可以看到某些日期存储为 MM/dd/yyyy。
我的电脑上的区域设置是正确的,设置为英国,甚至在检查列上的 Excel 格式后,我可以看到它设置为 dd/MM/yyyy。
那么,可能会出现什么问题呢?为什么有些出口不同?
网格中显示的值(正确格式 - 请参阅顶部 2 行“评价一次开始”,2016 年 1 月 6 日)
导出例程中的代码
Dim formatRange As Excel.Range
formatRange = xlWorksheet.Range("F2", "F99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("I1", "I99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("J1", "J99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("M1", "M99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("N1", "N99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("Q1", "Q99000")
formatRange.NumberFormat = "dd/MM/yyyy"
For k As Integer …Run Code Online (Sandbox Code Playgroud) 我在MS-Access数据库中有一个字段,如下所示.
当我在数据库上运行此查询时(从VB6应用程序或直接作为查询)
INSERT INTO [stockQuantities] ([stockCode], [description], [productGroup], [qtyFrom], " & _
"[price], [dateQuoted]) VALUES (" SOS ", "SOS SAND FOR COSTING ONLY", "COS", 10, " & _
"6.34, 01/12/2018);
Run Code Online (Sandbox Code Playgroud)
最终值,dateQuoted而是插入为00:00:04.当我将格式更改Short Date为时,它将插入为30/12/1899.
为什么我的日期没有以正确的格式插入?问题是查询还是字段?
我正在尝试使用下面的代码计算客户的订单总数和价值。
Dim iOrderCount As Integer
Dim iLineCount As Integer
Dim cTotalGoods As Decimal
Dim cTotalVat As Decimal
Dim cTotalDelivery As Decimal
Using manOrders As New CManOrders(m_dbSql)
manOrders.GetOrdersInProgress(sAccountCode, iOrderCount, iLineCount, cTotalGoods, cTotalVat, cTotalDelivery)
Run Code Online (Sandbox Code Playgroud)
当我在子例程中为这些变量赋值时GetOrdersInProgress,这些值被正确赋值,当我单步执行代码时我可以看到这一点。
Public Sub GetOrdersInProgress(sAccountCode As String, ByRef RET_orderCount As Integer, ByRef RET_lineCount As Integer,
ByRef RET_totalGoods As Decimal, ByRef RET_totalVat As Decimal, RET_totalDelivery As Decimal)
...
For Each dr As DataRow In m_dbSql.getDataTable(sql).Rows
RET_orderCount = dbToInt(dr(ORDER_COUNT))
RET_lineCount = dbToInt(dr(LINE_COUNT))
RET_totalGoods = dbToDecimal(dr(TOTAL_GOODS))
RET_totalVat = dbToDecimal(dr(TOTAL_VAT))
RET_totalDelivery …Run Code Online (Sandbox Code Playgroud) 我想在MessageBox任何时候Enter按下键显示.我在vb.net2013年做到了这一点,但是在vb.net2005年试图做同样的事情时,我没有成功.
下面,我将展示在Form_Load子例程中创建列的代码.然后,我给出了Qty_change子程序的代码.
然后,我有一个替代版本的Qty_change标题.对于两者QTY_CHANGE,我已经显示了我得到的错误.什么是正确的代码?
SUB LOAD
...ETC ETC...
quantityItem = New ScrollableListItem((My.Resources.Resource.StrQuantity & ":" & vbTab) + quantityText, Nothing, Nothing, "quantity")
quantityItem.EditControl = textBox
quantityItem.Validator = quantityValidator
AddHandler quantityItem.ItemChanged, AddressOf QTY_Change
END SUB
Sub QTY_Change(ByVal sender As System.Object, ByVal e As System.EventArgs)
If e.KeyValue = 13 Then
MessageBox.Show("Response")
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
错误:'KeyValue'不是'System.EventArgs'的成员
Sub QTY_Change(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs)
Run Code Online (Sandbox Code Playgroud)
错误:方法'Public sub QTY_CHange'与委托'Delegate …