【问题标题】:How to insert foxpro 6 table to visual studio 2017?如何将 foxpro 6 表插入到 Visual Studio 2017?
【发布时间】:2017-05-24 14:40:32
【问题描述】:

最近我想更新我的旧应用程序女巫是使用 foxpro 6 编写的。现在我想用 VB.net 做一个新的。背后的原因是我的项目是我叔叔商店的POS系统。由于PC太旧了,随时可能损坏,我需要更新它并与Windows 10兼容,因为新PC使用的是Windows 10。这就是我需要制作新应用程序的原因但是当我使用链接服务时(数据源>添加新数据源)在Visual Studio中,它显示我的表是空白的,这是错误的,我的表中充满了数据。那么如何才能成功地将表格链接到 Visual Studio?

连接字符串Dsn=inventory

PS:我使用了正确的 odbc 驱动程序并多次测试并保持静止。

谢谢大家。

【问题讨论】:

  • 有点跑题了,但是如果你有 VS2017,是什么促使你使用 VBA 来制作一个新的应用程序?也就是说,如果没有更具体的信息,我认为您的问题无法回答。
  • 对不起,我错过了一些东西,背后的原因是我的项目是我叔叔商店的POS系统。由于 PC 太旧,随时可能损坏,我需要更新它并与 Windows 10 兼容,因为新 PC 使用的是 Windows 10。所以这就是我需要制作新应用程序的原因
  • 我的观点是,使用 VS2017,您可以使用 SQL Server Express 后端编写独立的可执行文件,并使用所有当前技术(WPF UI、实体框架等)... POS 系统用 VBA 编写(因此托管在,什么,Excel?Access?)似乎比 .net 解决方案工作更多 - 如果您坚持使用 VBA,我强烈建议您使用我的 Rubberduck 加载项,这样您就可以至少要为这个庞大的项目进行单元测试和适当的 IDE 工具。
  • 对不起,我犯了一个大错误。我一直在使用 VB.net。很抱歉
  • 哦。行。无论如何,很高兴您添加了该背景故事,但是您的帖子仍然缺乏使其可以回答的重要细节。你有任何错误吗?连接是否建立?您可以看到表格但看不到它们的数据? Visual Studio 只是一个 IDE;你有连接到foxpro数据的实际代码吗?你能包含一个连接和重现问题的sn-p代码吗?见minimal reproducible example

标签: vb.net visual-studio visual-foxpro


【解决方案1】:

使用 VFPOLEDB 进行连接。使用 VFPOLEDB,您只需使用带有如下连接字符串的 OleDbConnection:

new OleDbConnection("Provider=VFPOLEDB;Data Source=c:\your data folder")

还可以在 codeplex 上查看 Tom Brother 的 LinqToVFP、VFP EF Provider 等。

恕我直言,使用 Windows 10 不是在 VB.Net 中重写 VFP 应用程序的好理由。无论如何,如果您想这样做,那么为什么不将您的数据库后端也更改为其他东西,例如 postgreSQL、MySQL、SQL Server 等。

【讨论】:

  • 首先,谢谢您的回答。对不起,迟到的问题,我想问你一些关于我的编码的问题。我使用另一种方法连接我的 dbf,例如:Dim ConnectionString As String = "Provider=vfpoloedb.1;Data Source= mypath\;Collating Sequence=machine" Dim dbconnect As New OleDb.OleDbConnection(ConnectionString) dbconnect.Open() Application.DoEvents() 但是当我想使用添加新数据源向导时,结果与我上面所说的相同。这种方法不适合 foxpro 表吗?
  • 不幸的是我不使用向导,因此我不知道。我主要使用 LinqToVFP(Tom Brothers - codeplex)和没有数据集的直接编码(OleDbconnecrtion、OleDbCommand)。
【解决方案2】:

我找到了可以使用代码而不是向导连接 FoxPro 表的解决方案,这里是解决方案。

先使用连接字符串连接表,然后为表设置DataAdapter和DataSet,最后填充DataAdapter并放入DataGridView。

Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim connectionString As String = "provider=vfpoledb.1;data source=your location"
    Dim myConnection As New System.Data.OleDb.OleDbConnection(connectionString)
    myConnection.Open()
    Dim dataAdapter As New OleDbDataAdapter("FoxPro SQL cmd", myConnection)
    Dim dataSet As DataSet = New DataSet

    dataAdapter.Fill(dataSet, "Q")
    DataGridView1.DataSource = dataSet.Tables("Q")
End Sub

希望这能有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多