删除 SQL- 数据库中的 crlf?
Remove the crlf in the SQL-database?
我正在使用 Microsoft 的 Northwind 数据库进行练习。我尝试将 table 中的值填充到 Truedbgrid 中。这仍然有效,但后来我注意到 3 列有一个 crlf
。我试图用 REPLACE 解决它,但它没有用。
我将查询(在数据集中)从
更改为
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
至
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(Address,CHAR(13)+CHAR(10),' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
另一种我不知道的方式。我在互联网上搜索,如果有办法对 truedbgrid 说,删除所有 crlf
。但我没有找到任何东西。在table是那个crlf
看不见。我无法删除它。有什么想法吗?
我的 VB.NET 课程代码:
Private Sub tdbgContactsParamentrieren()
Try
With tdbgContacts
.AllowAddNew = False
.AllowDelete = False
.AllowColMove = False
.AllowFilter = True
.AllowSort = True
.MultiSelect = MultiSelectEnum.None
.AllowUpdate = True
.AllowUpdateOnBlur = True
.FilterBar = True
.RowHeight = 22
.TabAction = TabActionEnum.ColumnNavigation
.MarqueeStyle = MarqueeEnum.HighlightCell
.Columns(0).Caption = "ID"
.Columns(1).Caption = "Type"
.Columns(2).Caption = "Company"
.Columns(3).Caption = "Name"
.Columns(4).Caption = "Title"
.Columns(5).Caption = "Address"
.Columns(6).Caption = "City"
.Columns(7).Caption = "Region"
.Columns(8).Caption = "Postal Code"
.Columns(9).Caption = "Country"
.Columns(10).Caption = "Phone"
.Columns(11).Caption = "Extension"
.Columns(12).Caption = "Fax"
.Columns(13).Caption = "Home Page"
.Columns(14).Caption = "Photo Path"
With .Splits(0)
.AlternatingRowStyle = True
.EvenRowStyle.BackColor = Color.LightYellow
.EvenRowStyle.VerticalAlignment = AlignVertEnum.Center
.OddRowStyle.VerticalAlignment = AlignVertEnum.Center
.ColumnCaptionHeight = 30
.DisplayColumns(0).Width = 42 'ID
.DisplayColumns(1).Width = 52 'Type
.DisplayColumns(2).Width = 218 'Company
.DisplayColumns(3).Width = 168 'Name
.DisplayColumns(4).Width = 168 'Title
.DisplayColumns(5).Width = 150 'Country
.DisplayColumns(6).Width = 257 'Address
.DisplayColumns(8).Width = 56 'PostalCode
.DisplayColumns(9).Width = 168 'City
.DisplayColumns(10).Width = 90 'Phone
.DisplayColumns(11).Width = 56 'Extension
.DisplayColumns(12).Width = 93 'Fax
.DisplayColumns(13).Width = 200 'HomePage
For index As Integer = 0 To .DisplayColumns.Count - 1
.DisplayColumns(index).HeadingStyle.HorizontalAlignment = AlignHorzEnum.Center
.DisplayColumns(index).Locked = True
Next
End With
End With
Catch ex As Exception
End Try
End Sub
编辑:
那就是,在我做出改变之前。
当我这样做时:
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(Address,CHAR(13)+CHAR(10),' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
或
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(REPLACE(Address, CHAR(13), ' '), CHAR(10), ' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
或
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(REPLACE(cast(Address as nvarchar(max)), CHAR(13), ' '), CHAR(10), ' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
结果是:
编辑 2:
我需要 table "Contacts".
这是我的数据库结构:
您没有向我们展示您是如何将网格绑定到数据源的,但根据观察到的行为,它似乎在某种程度上依赖于 SELECT 查询.
因此,如评论中所述,请尝试为 REPLACE 函数的输出起一个别名,以便它具有可识别的名称:
REPLACE(REPLACE(cast(Address as nvarchar(max)), CHAR(13), ' '), CHAR(10), ' ') As Address,
现在,由于该列没有别名,我希望它不会绑定到网格中的 "Address" 列。
P.S。 a 作为一个单独的问题,这个:
Try
...
Catch ex As Exception
End Try
是一个反模式。捕获异常很好,但如果你这样做,你需要在某处记录异常详细信息(例如,在 Windows 事件日志中,或记录到文件中)。否则,如果您的代码确实出了问题,您将不知道它是什么,因此也无法尝试修复它。您正在丢弃旨在帮助您作为开发人员解决问题的重要信息。
我正在使用 Microsoft 的 Northwind 数据库进行练习。我尝试将 table 中的值填充到 Truedbgrid 中。这仍然有效,但后来我注意到 3 列有一个 crlf
。我试图用 REPLACE 解决它,但它没有用。
我将查询(在数据集中)从
更改为SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
至
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(Address,CHAR(13)+CHAR(10),' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
另一种我不知道的方式。我在互联网上搜索,如果有办法对 truedbgrid 说,删除所有 crlf
。但我没有找到任何东西。在table是那个crlf
看不见。我无法删除它。有什么想法吗?
我的 VB.NET 课程代码:
Private Sub tdbgContactsParamentrieren()
Try
With tdbgContacts
.AllowAddNew = False
.AllowDelete = False
.AllowColMove = False
.AllowFilter = True
.AllowSort = True
.MultiSelect = MultiSelectEnum.None
.AllowUpdate = True
.AllowUpdateOnBlur = True
.FilterBar = True
.RowHeight = 22
.TabAction = TabActionEnum.ColumnNavigation
.MarqueeStyle = MarqueeEnum.HighlightCell
.Columns(0).Caption = "ID"
.Columns(1).Caption = "Type"
.Columns(2).Caption = "Company"
.Columns(3).Caption = "Name"
.Columns(4).Caption = "Title"
.Columns(5).Caption = "Address"
.Columns(6).Caption = "City"
.Columns(7).Caption = "Region"
.Columns(8).Caption = "Postal Code"
.Columns(9).Caption = "Country"
.Columns(10).Caption = "Phone"
.Columns(11).Caption = "Extension"
.Columns(12).Caption = "Fax"
.Columns(13).Caption = "Home Page"
.Columns(14).Caption = "Photo Path"
With .Splits(0)
.AlternatingRowStyle = True
.EvenRowStyle.BackColor = Color.LightYellow
.EvenRowStyle.VerticalAlignment = AlignVertEnum.Center
.OddRowStyle.VerticalAlignment = AlignVertEnum.Center
.ColumnCaptionHeight = 30
.DisplayColumns(0).Width = 42 'ID
.DisplayColumns(1).Width = 52 'Type
.DisplayColumns(2).Width = 218 'Company
.DisplayColumns(3).Width = 168 'Name
.DisplayColumns(4).Width = 168 'Title
.DisplayColumns(5).Width = 150 'Country
.DisplayColumns(6).Width = 257 'Address
.DisplayColumns(8).Width = 56 'PostalCode
.DisplayColumns(9).Width = 168 'City
.DisplayColumns(10).Width = 90 'Phone
.DisplayColumns(11).Width = 56 'Extension
.DisplayColumns(12).Width = 93 'Fax
.DisplayColumns(13).Width = 200 'HomePage
For index As Integer = 0 To .DisplayColumns.Count - 1
.DisplayColumns(index).HeadingStyle.HorizontalAlignment = AlignHorzEnum.Center
.DisplayColumns(index).Locked = True
Next
End With
End With
Catch ex As Exception
End Try
End Sub
编辑:
那就是,在我做出改变之前。
当我这样做时:
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(Address,CHAR(13)+CHAR(10),' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
或
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(REPLACE(Address, CHAR(13), ' '), CHAR(10), ' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
或
SELECT ContactID, ContactType, CompanyName, ContactName, ContactTitle, REPLACE(REPLACE(cast(Address as nvarchar(max)), CHAR(13), ' '), CHAR(10), ' '), City, Region, PostalCode, Country, Phone, Extension, Fax, HomePage, PhotoPath, Photo FROM dbo.Contacts
结果是:
编辑 2:
我需要 table "Contacts".
这是我的数据库结构:
您没有向我们展示您是如何将网格绑定到数据源的,但根据观察到的行为,它似乎在某种程度上依赖于 SELECT 查询.
因此,如评论中所述,请尝试为 REPLACE 函数的输出起一个别名,以便它具有可识别的名称:
REPLACE(REPLACE(cast(Address as nvarchar(max)), CHAR(13), ' '), CHAR(10), ' ') As Address,
现在,由于该列没有别名,我希望它不会绑定到网格中的 "Address" 列。
P.S。 a 作为一个单独的问题,这个:
Try
...
Catch ex As Exception
End Try
是一个反模式。捕获异常很好,但如果你这样做,你需要在某处记录异常详细信息(例如,在 Windows 事件日志中,或记录到文件中)。否则,如果您的代码确实出了问题,您将不知道它是什么,因此也无法尝试修复它。您正在丢弃旨在帮助您作为开发人员解决问题的重要信息。