Удалить crlf в SQL-базе? - PullRequest
       1

Удалить crlf в SQL-базе?

0 голосов
/ 07 октября 2019

Я делаю упражнение с базой данных Northwind от Microsoft. Я пытаюсь заполнить значения из таблицы в Truedbgrid. Это все еще работало, но потом я заметил, что 3 столбца имеют crlf. Я пытался решить это с помощью ЗАМЕНЫ, но это не сработало.

Я изменил запрос (в наборе данных) с

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

Другой способ, которого я не знаю. Я ищу в Интернете, если есть способ сказать сетке, удалите все crlf. Но я ничего не нашел. В таблице указано, что 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

РЕДАКТИРОВАТЬ: enter image description here

То, прежде чем я внесу изменения.

Когда я делаю это так:

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

Результат: enter image description here

РЕДАКТИРОВАТЬ 2:

Мне нужна таблица "Контакты".

Это моя структура базы данных: enter image description here

1 Ответ

1 голос
/ 07 октября 2019

Вы не показали нам, как именно вы привязываете сетку к своему источнику данных, но, исходя из наблюдаемого поведения, вполне вероятно, что он каким-то образом зависит от имен полей, возвращаемых запросом SELECT.

Поэтому, как уже упоминалось в комментариях, попробуйте дать выводу вашей функции REPLACE псевдоним, чтобы у нее было распознаваемое имя:

REPLACE(REPLACE(cast(Address as nvarchar(max)), CHAR(13), ' '), CHAR(10), ' ') As Address,

Прямо сейчас, поскольку в этом столбце нет псевдонима,Я ожидаю, что он не привязан к столбцу «Адрес» в сетке.


PS a как отдельная проблема, это:

Try
...
Catch ex As Exception
End Try

является анти-шаблон. Можно ловить исключения, но если вы это сделаете, вам нужно где-то записать детали исключения (например, в журнал событий Windows или в файл). В противном случае, если что-то пойдет не так в вашем коде, вы не поймете, что это было, и, следовательно, не сможете попытаться это исправить. Вы выбрасываете важную информацию, которая призвана помочь вам как разработчику решить проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...