【发布时间】:2020-08-07 11:27:53
【问题描述】:
我们的客户使用 Visual FoxPro 数据库。 我需要创建一个 sql 字符串,我必须将地址字段拆分为街道和门牌号码。 我找到了 AT 和 CharIndex 函数,但它们只能直接在 Visual Fox Pro 中工作,而不是在 SQL 语句中。
我使用vb.net通过oledb连接到VFP数据库。 它必须在sql语句中完成,不能使用更多的代码。
提前致谢。
Dim con As System.Data.OleDb.OleDbConnection = Nothing
con = New System.Data.OleDb.OleDbConnection("Provider=vfpoledb;Data Source=" & Me.lblDatabase.Text & ";Collating Sequence=machine;")
con.Open()
Dim sqlString As String = "SELECT Address FROM AddressTable"
Dim cmd As OleDbCommand = New OleDbCommand(sqlString, con)
Try
con.Open()
Catch ex As Exception
End Try
Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim myDataSet As DataSet = New DataSet()
' Using DataAdapter object fill data from database into DataSet object
Try
myDA.Fill(myDataSet, "MyTable")
Catch ex As Exception
MsgBox("Error " & Err.Description)
End Try
' Binding DataSet to DataGridView
Try
DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView
Catch ex As Exception
End Try
con.Close()
【问题讨论】:
-
地址是否有任何一致性,即它们是否总是无一例外地采用“123 The Street”或“123, The Street”的格式?会有“221b Baker St”还是“Dunroamin”?
-
您当然可以在通过 VFPOLEDB 对 VFP 数据执行的 SQL 中使用 AT()。真正的问题是,你的数据是什么样的,你认为你会用 AT() 做什么?还有,为什么要在 SQL 中完成?
-
荷兰的地址总是:streetname {space} 号,所以我需要在字段中找到空格。谢谢,也许我以前做错了什么,AT现在似乎可以工作了。 sqlstring = "SELECT left(adm_prf2.st_street, AT(" ", adm_prf2.st_street)) FROM adm_prf2" 现在可以使用
-
@SanderWijnen,请看我的回复。虽然您的代码可能有效,但您可能会丢失数据。
标签: sql vb.net visual-foxpro