Страница: 1 | 
		
		 
			   
			 
			 Как ограничить ввод пользователя в поля DBGrid? Текстовое поле в базе, к примеру, имеет длину 12, а в DBgrid можно ввести больше. При переходе к следующей записи - ошибка. Как не дать пользователю ввести больше, чем надо?   
			 
			 Не помню точно (VB под рукой нет)  , нужно отлавливать событие что-то вроде AfterUpdate или BeforeUpdate... Поэскпериментируй... Спасибо за ответ. Работая в Delphy и применяя DBGrid, у меня пользовательский ввод автоматически ограничивался длиной поля базы (Delphy+Paradox). Я подумал, что во всем множестве свойств VB DBGrid я не заметил какого-либо свойства. А через отслеживание событий можно сделать многое. Это, конечно, лень-матушка писать коды.  Когда-то, где-то, что-то подобное писал. На тебе кусок из моей про-ги, половина того что там есть тебе не нужна (рудименты моей про-ги), но принцип поймёшь... 'Это в General Declarations Private Sub DBGrid1_BeforeColEdit(ByVal ColIndex As Integer, ByVal KeyAscii As Integer, Cancel As Integer) Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Ограничить ввод в DBGrid                          
     
    
Добавлено: 06.06.03 14:30
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 dimazzz
      
       
  
 
    
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 3
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 .COM
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
ICQ: 212158853 
Вопросов: 4
Ответов: 79
      
 Профиль |  | #1
       
Добавлено:  06.06.03 15:58
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 dimazzz
![]()
![]()
![]()
![]()
![]()
Вопросов: 11
Ответов: 3
      
 Профиль |  | #2
       
Добавлено:  06.06.03 17:01
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 Justas 
![]()
![]()
![]()
ICQ: 259418212 
Вопросов: 24
Ответов: 325
      
 Web-сайт:  
 Профиль |  | #3
      
Добавлено:  07.06.03 09:29
       
    
       
  
 
    
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
'запоминаем содержимое
strDBGridCell = DBGrid1.Columns(ColIndex)
End Sub