Tag: jet

使用Jet的OleDbDataAdapter数据types不匹配

我正在使用OleDbDataAdapter (Microsoft.ACE.OLEDB.12.0准确)从Excel工作簿检索数据。 对于一个表,我使用的是一个types化的数据集,但是对于另一个表,我不能这样做,因为列数是未知的(Excel模板可能会生成额外的列)。 问题是,如果某人在列中input了太多的数字值,“JET”似乎认为它是一个数字列,并且文本值不再被加载。 我知道你可以改变模板,并为该列设置特定的数据types,但模板已经广泛传播,所以我宁愿在导入时解决它。 现在我所尝试的是首先计算已使用列的数量,并使用已定义的Columns集合准备新的DataTable,并将它们的DataType属性设置为typeof(string) 。 可惜JET似乎并没有看这个,而是依然select了自己的方式。 我猜即使我可以在这里使用一个强types的数据集,它也不会帮助… 有谁知道如何告诉JET如何导入数据,所以我不必面对提供新的模板版本的负担? 请* 请 * :不要附带Excel自动化解决scheme…

VBA:用Excel查询访问。 为什么这么慢?

我发现这个代码在线查询Access并将数据input到Excel(2003),但它比它应该慢得多: Sub DataPull(SQLQuery, CellPaste) Dim Con As New ADODB.Connection Dim RST As New ADODB.Recordset Dim DBlocation As String, DBName As String Dim ContractingQuery As String If SQLQuery = "" Then Else DBName = Range("DBName") If Right(DBName, 4) <> ".mdb" Then DBName = DBName + ".mdb" DBlocation = ActiveWorkbook.Path If Right(DBlocation, 1) <> "\" Then DBlocation […]

System.Data.OleDb.OleDbException:无效的Internet地址。 如何使用OleDb连接到位于Web服务器上的excel文件

我试图创build一个OleDb连接到位于SharePoint服务器上的Excel文件。 我正在玩的例子代码抛出一个OleDbexception“无效的互联网地址”: public static void ConnectToRemoteExcelFile() { string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;\";", "http://horde.servername.co.uk/Docs/Documents/Sales.xlsx"); using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); } } 任何人都知道如何连接到Web服务器上的Excel电子表格? 更新 微软的支持已经回到我的身边,并同意不可能连接到位于Web服务器上的Excel文件。 Jet .40和新闻ACE(Access Connectivity Engine)都不支持这种操作模式。 他们引用了KB文章“在Access 2000,Access 2002,Access 2003和Access 2007中,FTP或HTTP服务器上的导入/链接数据帮助主题不正确”

使用OleDbDataAdapter从Excel工作表中获取数据的问题

首先,我想说我在这里深深地感到,因为我只是对公司的其他人编写的代码进行一些更改,使用OleDbDataAdapter与Excel“交谈”,而我并不熟悉接着就,随即。 有一个错误,我不能遵循。 我想用一个OleDbDataAdapter来读取大约450行的Excel文件。 在代码中,它是这样做的: connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + path + "';" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\""); connection.Open(); OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCommand.CommandText, connection); objAdapter.Fill(objDataSet, "Excel"); foreach (DataColumn dataColumn in objTable.Columns) { if (dataColumn.Ordinal > objDataSet.Tables[0].Columns.Count – 1) { objDataSet.Tables[0].Columns.Add(); } objDataSet.Tables[0].Columns[dataColumn.Ordinal].ColumnName = dataColumn.ColumnName; objImport.Columns.Add(dataColumn.ColumnName); } foreach (DataRow dataRow in objDataSet.Tables[0].Rows) { … […]

Jet引擎 – 255个字符截断

我需要将Excel电子表格导入到我的程序中,并具有以下代码: string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;IMEX=1;HDR=NO;""", MyExcelFile.xls); command.CommandText = "SELECT * FROM [Sheet1$]"; (注意,上面的代码不是真正的代码,但应该让你看看我在做什么) 我正在获取导入的文件,唯一的问题是Excel表中超过255个字符被截断的任何列。 有没有办法解决这个问题呢? 我在某处读到,如果你确定前面8行的列中有一长串文本,那么它将被视为一个备忘录字段,因此不会被截断,但似乎不起作用。 有任何想法吗? 格雷姆

如何使用Excel VBA获取新插入logging的ID?

似乎这是一个普遍的问题,但大多数解决scheme是指连接多个SQL命令,我相信不能用ADO / VBA来完成(但我很高兴在这方面显示错误)。 我目前插入我的新logging,然后运行一个select查询使用(我希望)足够的字段,以保证只有新插入的logging可以返回。 我的数据库很less被多个人同时访问(查询之间发生另一次插入的风险可以忽略不计),并且由于表的结构,识别新logging通常相当容易。 我现在试图更新一个没有太多的唯一性范围的表,而不是人为的主键。 这意味着新的logging可能并不是独一无二的,我不愿意添加一个字段来强制唯一性。 在这种情况下,将logging插入到Access表中然后从Excel中查询新的主键的最佳方法是什么? 感谢您的答复。 我试图让@@IDENTITY工作,但是这总是返回0使用下面的代码。 Private Sub getIdentityTest() Dim myRecordset As New ADODB.Recordset Dim SQL As String, SQL2 As String SQL = "INSERT INTO tblTasks (discipline,task,owner,unit,minutes) VALUES (""testDisc3-3"",""testTask"",""testOwner"",""testUnit"",1);" SQL2 = "SELECT @@identity AS NewID FROM tblTasks;" If databaseConnection Is Nothing Then createDBConnection End If With databaseConnection .Open dbConnectionString .Execute (SQL) […]