Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Ограничить ввод в DBGrid Добавлено: 06.06.03 14:30  

Автор вопроса:  dimazzz

Как ограничить ввод пользователя в поля DBGrid?

Текстовое поле в базе, к примеру, имеет длину 12, а в DBgrid можно ввести больше. При переходе к следующей записи - ошибка. Как не дать пользователю ввести больше, чем надо?

 

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 .COM



ICQ: 212158853 

Вопросов: 4
Ответов: 79
 Профиль | | #1 Добавлено: 06.06.03 15:58

Не помню точно (VB под рукой нет) , нужно отлавливать событие что-то вроде AfterUpdate или BeforeUpdate...

Поэскпериментируй...

Ответить

Номер ответа: 2
Автор ответа:
 dimazzz



Вопросов: 11
Ответов: 3
 Профиль | | #2 Добавлено: 06.06.03 17:01

Спасибо за ответ.

Работая в Delphy и применяя DBGrid, у меня пользовательский ввод автоматически ограничивался длиной поля базы (Delphy+Paradox). Я подумал, что во всем множестве свойств VB DBGrid я не заметил какого-либо свойства. А через отслеживание событий можно сделать многое. Это, конечно, лень-матушка писать коды. 

Ответить

Номер ответа: 3
Автор ответа:
 Justas



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #3
Добавлено: 07.06.03 09:29

Когда-то, где-то, что-то подобное писал. На тебе кусок из моей про-ги, половина того что там есть тебе не нужна (рудименты моей про-ги), но принцип поймёшь...

'Это в General Declarations
Dim strDBGridCell As String 'значение ячейки (для транзакции)


Private Sub DBGrid1_AfterColEdit(ByVal ColIndex As Integer)
If DBGrid1.Columns(ColIndex) = strDBGridCell Then Exit Sub
'если что, - востанавливаем значение
If MsgBox("Сохранить изменения?", vbQuestion + vbYesNo) = vbNo Then
  DBGrid1.Columns(ColIndex) = strDBGridCell
Else 'если Да
  Select Case ColIndex
    Case 0
    If Len(DBGrid1.Columns(ColIndex)) >= 8 Then
      MsgBox "В этом поле длинна записи не должна превышать 8 символов.", vbCritical, "Ошибка"
      DBGrid1.Columns(ColIndex) = strDBGridCell
      Exit Sub
    End If
    Case 1
    If Len(DBGrid1.Columns(ColIndex)) >= 45 Then
      MsgBox "В этом поле длинна записи не должна превышать 45 символов.", vbCritical, "Ошибка"
      DBGrid1.Columns(ColIndex) = strDBGridCell
      Exit Sub
    End If
    Case 2
    If Len(DBGrid1.Columns(ColIndex)) >= 25 Then
      MsgBox "В этом поле длинна записи не должна превышать 25 символов.", vbCritical, "Ошибка"
      DBGrid1.Columns(ColIndex) = strDBGridCell
      Exit Sub
    End If
  End Select
  strDBGridCell = DBGrid1.Columns(ColIndex) 'переменная = новому значению
  DBGrid1.Columns(ColIndex) = strDBGridCell 'присваеваем новое значение
End If
End Sub

Private Sub DBGrid1_BeforeColEdit(ByVal ColIndex As Integer, ByVal KeyAscii As Integer, Cancel As Integer)
'запоминаем содержимое
strDBGridCell = DBGrid1.Columns(ColIndex)
End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам