小编Azi*_*zim的帖子

在vb.net中处理dbnull数据

我想生成从MS-Access数据库检索并存储在DataTable对象/变量myDataTable中的一些格式化数据输出.但是,myDataTable中的一些字段包含dbNull数据.因此,如果任何字段lastname,intialssID的值为dbNull,则以下VB.net代码段将给出错误.

   dim myDataTable as DataTable
   dim tmpStr as String
   dim sID as Integer = 1

   ...
   myDataTable = myTableAdapter.GetData() ' Reads the data from MS-Access table
   ...

   For Each myItem As DataRow In myDataTable.Rows

    tmpStr = nameItem("lastname") + " " + nameItem("initials")

    If myItem("sID")=sID Then
        ' Do something
    End If

    ' print tmpStr

   Next
Run Code Online (Sandbox Code Playgroud)

所以,我如何得到上面的代码工作时字段可能包含的DBNull,而不必每次数据是否为DBNull在时间来检查这个问题

vb.net dbnull

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

Microsoft.ACE.OLEDB.12.0提供程序未注册

我有一个带有两个项目的Visual Studio 2008解决方案(一个Word-Template项目和一个用于测试的VB.Net控制台应用程序).这两个项目都引用一个数据库项目,该项目打开与MS-Access 2007数据库文件的连接,并引用System.Data.OleDb.在数据库项目中,我有一个函数,它按如下方式检索数据表

 private class AdminDatabase
   ' stores the connection string which is set in the New() method
   dim strAdminConnection as string

   public sub New()
   ...
   adminName = dlgopen.FileName
   conAdminDB = New OleDbConnection
   conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
       "Provider=Microsoft.ACE.OLEDB.12.0"

   ' store the connection string in strAdminConnection
   strAdminConnection = conAdminDB.ConnectionString.ToString()
   My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
   ...
   End Sub

   ' retrieves data from the database
   Public Function getDataTable(ByVal sqlStatement As String) As DataTable
        Dim ds As New DataSet
        Dim …
Run Code Online (Sandbox Code Playgroud)

oledb ado.net ms-access visual-studio

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

如何在C#中使用SerialPort端口对象的dataReceived事件?

我正在尝试创建一个小应用程序来收集从连接到COM10的外部传感器接收的数据.我已成功创建了一个小型C#控制台对象和应用程序,它使用for循环打开端口并将数据流传输到文件一段固定的时间.

我想转换此应用程序以使用dataReceived事件来代替流.阅读前5个SerialPort提示后,我似乎仍然无法工作,也不知道我缺少什么.我重写了控制台应用程序,以便所有代码都在Main中并粘贴在下面.有人可以帮助启发我,为什么事件处理程序port_OnReceiveDatazz没有被调用,即使我知道硬件有数据被发送到端口?

谢谢

阿齐姆

PS:感谢@Gabe,@ Jason Down@abatishchev的所有建议.我很难过,似乎无法让事件处理程序工作.也许它与设备有关.我只能在线程中读取端口并将数据直接传输到文件中.



namespace serialPortCollection
{   class Program
    {
        static void Main(string[] args)
        {

            const int bufSize = 2048;
            Byte[] buf = new Byte[bufSize]; //To store the received data.

            SerialPort sp = new SerialPort("COM10", 115200);
            sp.DataReceived += port_OnReceiveDatazz; // Add DataReceived Event Handler

            sp.Open();
            sp.WriteLine("$"); //Command to start Data Stream

            // Wait for data or user input to continue.
            Console.ReadLine();

            sp.WriteLine("!"); //Stop Data Stream Command
            sp.Close();
        } …
Run Code Online (Sandbox Code Playgroud)

c# serial-port

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

我应该使用枚举还是查询数据库中的表格?

在我的数据库中,我有表定义类型的表

表:出版物类型


ID | Type
----------
1  | Article
2  | Abstract
3  | Book
....

通过ID键将其与具有字段TypeID的发布表相关联.

然后我创建一个PublicationTable数据表我的.NET应用程序,我想根据发布类型进行筛选.例如,以下函数为我提供了特定作者和出版物类型的出版物数量.


    Public Function countPublications(ByVal authorID As Integer, _ 
                                      ByVal publicationType As Integer) As Integer

        Dim authPubs As New PublicationsDataSet.tblPublicationsDataTable
        authPubs = Me.getAuthorsPublications(authorID)

        Dim dv As New DataView(authPubs)
        dv.RowFilter = "status='published' AND type='" + _ 
                       publicationType.ToString + "'"

        Return dv.Count

    End Function

要调用此函数来获取特定类型作者的文章计数,我可以

  1. 用两个整数调用函数

    countPublications(authorID,1)

  2. 设置枚举,以便我可以写

    countPublications(authorID,pubType.Article)

    要么

  3. 以某种方式使用发布类型表来过滤发布数据集,但我还没有理解如何做到这一点.

我应该考虑哪些其他方法.

谢谢

.net data-structures

13
推荐指数
2
解决办法
1787
查看次数

在MS-Excel中保护工作表时如何避免运行时错误?

下面的代码片段更改了单元格的数据验证状态,并在Excel-2003工作表不受保护时运行.但是,当我保护工作表时,宏不会运行并引发运行时错误

运行时错误'-2147417848(80010108)':

对象'验证'的方法'添加'失败

我试过包装代码

Me.unprotect
...
Me.protect
Run Code Online (Sandbox Code Playgroud)

但这不能正常工作.那么,当工作表受到保护而没有上述运行时错误时,如何修改下面的代码才能工作(即让代码修改解锁单元格的验证)?

更新

我的原始工作簿是Excel 2003.我在Excel 2007中测试了@ eJames解决方案,其中包含Workbook_Open的以下定义

Sub WorkBook_Open()
    Me.Worksheets("MainTable").Protect  contents:=True, userinterfaceonly:=True 
End Sub
Run Code Online (Sandbox Code Playgroud)

当工作表受到保护时,代码仍会失败并出现以下运行时错误

运行时错误'1004':应用程序定义的错误或对象定义的错误

谢谢,阿齐姆


代码片段

'cell to add drop down validation list'
dim myNamedRange as String
dim modifyCell as Range 
modifyCell = ActiveCell.Offset(0,1) 


' set list values based on some conditions not defined for brevitity'
If myCondition then
   myNamedRange = "range1"
Else
   myNamedRange = "range2"
End If

With modifyCell.Validation
   .Delete

   'Run time error occurs on the next line'
   .Add Type:=xlValidateList, …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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

学习VTK库工具包有哪些推荐的资源和教程?

除了Kitware提供的书籍之外,我正在寻找一些可以帮助学习VTK库的资源的链接.优选地,使用示例代码和教程.谷歌的结果对我来说并不是非常有用.所以我在这里要求获得VTK资源的链接.

python vtk

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

对VTK 5.04和VTK 5.4.2的vtkMassProperties的差异感到好奇

我有一个小的python VTK函数,可以计算嵌入在一堆TIFF图像中的对象的体积和表面积.要阅读TIFF'sVTK,我已经使用vtkTIFFReader并使用处理结果vtkImageThreshold.然后我用它vtkMassProperties来提取阈值处理后识别的物体的体积和表面积.

使用VTK-5.04此函数返回测试堆栈的正确值(3902像素).但是,使用VTK-5.4.2相同的函数会返回不同的值(422像素).有人可以解释一下吗?


def testvtk():
    # read 36 TIFF images. Each TIFF is 27x27 pixels
    v16=vtk.vtkTIFFReader()
    v16.SetFilePrefix("d:/test/slice")
    v16.SetDataExtent(0,27,0,27,1,36)
    v16.SetFilePattern("%s%04d.tif")
    v16.SetDataSpacing (1,1,1)
    v16.Update()

    # Threshold level for seperating background/foreground pixels
    maxthres=81

    # Threshold the image stack
    thres=vtk.vtkImageThreshold()
    thres.SetInputConnection(v16.GetOutputPort())
    thres.ThresholdByLower(0)
    thres.ThresholdByUpper(maxthres)

    # create ISO surface from thresholded images
    iso=vtk.vtkImageMarchingCubes()
    iso.SetInputConnection(thres.GetOutputPort())

    # Have VTK calculate the Mass (volume) and surface area
    Mass = vtk.vtkMassProperties()
    Mass.SetInputConnection(iso.GetOutputPort()) …
Run Code Online (Sandbox Code Playgroud)

python 3d vtk

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

Python字典创建错误

我试图从存储列表中创建一个Python字典.第一种方法有效

>>> myList = []
>>> myList.append('Prop1')
>>> myList.append('Prop2')
>>> myDict = dict([myList])
Run Code Online (Sandbox Code Playgroud)

但是,以下方法不起作用

>>> myList2 = ['Prop1','Prop2','Prop3','Prop4']
>>> myDict2 = dict([myList2])
ValueError: dictionary update sequence element #0 has length 3; 2 is required
Run Code Online (Sandbox Code Playgroud)

所以我想知道为什么使用append的第一个方法有效但第二个方法不起作用?有没有之间的差异myListmyList2

编辑

再次检查myList2实际上有两个以上的元素.更新了第二个示例来反映这一点

python python-2.5

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

如何在MATLAB中标记colorbar标记?

我想手动设置我的colorbar's刻度标签及其位置水平.例如:

 Min=0.8;       
 Max=12;    
 h = colorbar('horiz');       
 set(h,'location','southoutside')
 set(h,'XTickLabel',{num2str(Min),'mm'  ,num2str(Max)})
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码重复了tick标签.如何手动设置滴答数?我想让我colorbar看起来像下面这样:

****----------------****         //colorbar
min        [mm]           max
Run Code Online (Sandbox Code Playgroud)

matlab

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

为什么在C#中Queue会在其元素中加扰数据?

我完全不知道我的队列是如何运作的.我正在尝试(并且失败)编写一个小型多线程应用程序来收集和显示C#中的数据.
在阅读了Albahari的书并使用消费者/生产者模式后,他描述了我的大部分工作都可以工作,除了我的数据似乎在队列中被扰乱.在排队之前,对象中的字段具有以下值

timeStamp = 6
data [] = {4936,9845,24125,44861}

在出列数据后,数据看起来像

timeStamp = 6
data [] = {64791,19466,47772,65405}

我不明白为什么数据字段中的值在出列后会被更改?我很困惑,所以我想我会把它扔出去,看看是否有人可以指出我正确的方向来解决这个问题,或者指出我朝着不同的方向前进.


相关守则


自定义对象用于数据存储

相关对象和字段.类sensorData是用于存储我的计算的单独类.

public class sensorData
{
    public const int bufSize = 4;
    public UInt16[] data = new UInt16[4];
    public double TimeStamp = 0; 
    public int timeIndex = 0;
}
Run Code Online (Sandbox Code Playgroud)

以下字段用于设置队列并在enqueue和dequeue线程之间发出信号.

EventWaitHandle wh = new AutoResetEvent(false);
Queue<sensorData> dataQ = new Queue<sensorData>();
object locker = new object();
Run Code Online (Sandbox Code Playgroud)

入队方法/线程

这是我的工作线程,它计算四条正弦曲线并将结果排队等待处理.我还将结果写入文件,因此我知道它的计算结果.

private void calculateAndEnqueueData(BackgroundWorker worker, DoWorkEventArgs e)
{
    int j = 0;
    double …
Run Code Online (Sandbox Code Playgroud)

c# queue multithreading

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

我是否错过了在Ubuntu 9.04上使用Python2.6绑定构建/安装VTK-5.4的步骤?

我使用源代码中的Python绑定成功构建并安装了VTK-5.4.然而,当我尝试在python中导入VTK时,它会产生以下Traceback错误

文件"",第1行,in

文件"/usr/local/lib/python2.6/dist-packages/VTK-5.4.2-py2.6.egg/vtk/ init .py",第41行,来自普通导入*

从libvtkCommonPython import*获取文件"/usr/local/lib/python2.6/dist-packages/VTK-5.4.2-py2.6.egg/vtk/common.py",第7行

ImportError:libvtkCommonPythonD.so.5.4:无法打开共享对象文件:没有这样的文件或目录

所以我想知道我错过了什么?我尝试将/usr/local/lib/vtk-5.4添加到PATH和PYTHONPATH环境变量中,但仍然得到相同的结果.任何提示或建议?

注意: libvtkCommonPythonD.so.5.4作为libvtkCommonPythonD.so.5.4.2的符号链接存在于/usr/local/lib/vtk-5.4中

python 3d vtk

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

如何在Labview for/while循环中手动递增/递减索引

这是我的基本用例:

Labview收到来自外部硬件的触发后开始收集模拟数据.它监视此数据并在模拟数据达到阈值时触发另一块硬件.每个试验的阈值可以有不同的值.但是,操作员可能希望能够重做试验(如果由于噪声或未按预期达到阈值而将触发器发送到早期).

是否可以递增/递减索引,或者我是否需要使用移位寄存器,我可以根据需要递增/递减(如果按下重做按钮则减少它)?

谢谢

阿齐姆

labview

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

如何在高速率收集多通道数据时定期更新Labview图表

寻求Labview数据收集计划的一些帮助.如果我可以在每个通道以8kHz(提供16个数据点)收集2ms的数据(我使用National Instruments数据采集板在4个模拟通道上采集数据).DAQ-MX收集任务提供4个波形的一维阵列.

如果我不显示数据我可以做的所有计算时间大约是2ms,如果处理循环落后于收集循环,则可以.在Labview的前面板中更新图表会引入不可接受的延迟.我们不需要非常快速地更新显示器,可能在5-10Hz就足够了.但我不知道如何设置它.

我目前的Labview VI有三个并行循环

  1. 用于数据收集的定时循环
  2. 用于分析和处理的循环
  3. 用于将数据缓存为TDMS文件的低优先级循环

使用队列将数据从集合循环传递到其他循环.Labview示例给了我一些想法,但我被卡住了.

任何建议,参考,想法将不胜感激.

谢谢

阿齐姆

跟进问题

eaolson建议我重新对数据进行采样以用于显示目的.来自DAQ-MX读数的数据是一维波形阵列.所以我需要以某种方式构建或连接每个通道的波形数据.然后在更新前面板图表之前重新采样数据.我想最好的方法是对数据进行排队,并在显示循环中使堆栈构建出列,并根据屏幕分辨率重新采样数据,然后更新图表.会不会有任何其他方法.我将查看(NI Labview论坛)[ http://forums.ni.com/ni/board?board.id=170]以获取eaolson提供的更多信息.

更新

  1. 将图表的可接受更新率更改为5-10Hz(感谢Underflow和eaolson)
  2. 磁盘缓存循环是低优先级的(感谢eaolson)
  3. 感谢所有的回复.

labview daq-mx

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