Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Удаление лишних пробелов


Автор: Flotskiy 5.7.2005, 18:09
Добрый вечер всем!
Юзеры с компов забивают инфу в б/д Access, и могут в начале поставить пробел, в средине - два пробела, в конце предложения - пробел ( в один ТекстБокс) и т.д.
Пример: 25 (два пробела) мая (пробел) 2005, или
(пробел) Иванов (два пробела) Иван (пробел) Иванович
а в дальнейшем данные не поддаются ни сортировке по ФИО и много разных глюков, и приходится искать и исправлять вручную.
Я знаю, как удалить пробелы в начале и конце строки, а вопрос
как между словами оставить по одному пробелу?
Может непонятно написал?
Помогите, pse!
С уважением

Автор: boevik 5.7.2005, 18:34
Убрать пробелы в начале и в конце - функция Trim.
Код

s = Trim(Text1.Text)

Заменить два пробела на один - Replace
Код

Dim s As String
s = Text1.Text
Do
    s = Replace(s, "  ", " ")
Loop Until s = Replace(s, "  ", " ")
Text1.Text = s

Автор: Flotskiy 5.7.2005, 18:57
boevik, благодарю за подсказку.
Наилучшие пожелания!

Автор: Akina 6.7.2005, 08:16
Flotskiy
Вообще-то после нажатия кнопы "Записать в БД", но до записывания инфы в БД все введенное должно проходить программный контроль. Исправляемые ошибки (те же пробелы) должны автоматически корректироваться, фатальные - вызывать ругань на машинистку без записи кривых данных в БД и требование откорректировать введенный бред. Т.е. в БД должны попадать уже проверенные записи.

Автор: Flotskiy 8.7.2005, 14:25
Добрый вечер всем! Akina, при заполнении данных одного абитуриента нужно заполнить около 25 ТекстБоксов. Нужно грамотно заполнить четыре поля: ФИО, дата рождения и т.д., в шести полях установлены стандартные ответы в ComboBox, а остальное -не суть важно.
Есть в проге подсказки об обязательном заполнении определенных полей.
Код

Private Sub Data1_Validate(Action As Integer, Save As Integer)
Dim iResponse As Integer

    If (Action = vbDataActionUpdate) Then
        If (Len(Text2) = 0) Then 
             iResponse = MsgBox("Пожалуйста, введите место жительства абитуриента.", _
                     vbInformation + vbOKOnly, progname)
             Text2.SetFocus 'XXXXXXXXXXXXXXXXX
             Save = 0
             Action = 0
       End If
    End If

End Sub

Примерно так.
Цитата
Вообще-то после нажатия кнопы "Записать в БД", но до записывания инфы в БД все введенное должно проходить программный контроль.

Вот как установить контроль этих четырех полей до занесения в БД, конечно, это было бы прекрасно.
Если есть какие- то возможности (пробелы) откорректировать автоматом или указать юзеру об ошибке - подскажи, pse, буду признателен.
С уважением


Автор: Akina 8.7.2005, 15:13
Цитата(Flotskiy @ 8.7.2005, 15:25)
Если есть какие- то возможности (пробелы) откорректировать автоматом или указать юзеру об ошибке - подскажи, pse, буду признателен.

Ну эта... типа такого:

Код

' draft
Private Sub Button_InsertDataIntoDatabase
If Not Valid(TextBox_Familia.Text) Then
   MsgBox "Ошибка в поле ФАМИЛИЯ!!!" & VbCr & "Открооектируйте."
   TextBox_Familia.SetFocus
   Exit Sub
End If
If Not Valid(TextBox_Imya.Text) Then
   MsgBox "Ошибка в поле ИМЯ!!!" & VbCr & "Открооектируйте."
   TextBox_Imya.SetFocus
   Exit Sub
End If
.........
Call WriteDataToDatabase
Call ClearInputForm
FirstFieldOfForm.SetFocus
End Sub

Private Function Valid(SomeText as String) As Boolean
Dim i As Integer
Const NotValidCharacters = " 0123456789`~@#$%^&*()_+|':;=\/?,.<>№" & Chr(34)
Valid = True
For i = 1 to Len(NotValidCharacters)
   If Instr(SomeText,Mid(NotValidCharacters,i,1)) > 0 Then 
      Valid = False
      Exit Function
   End If
Next i
' Другие проверки на правильность
End Function

' Функции проверки на правильность других данных (даты, адреса и пр.).

Автор: Flotskiy 12.7.2005, 14:01
Akina, благодарю за помощь.
Тебе "+".
Наилучшие пожелания!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)