powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Каким образом реализовать?
13 сообщений из 13, страница 1 из 1
Каким образом реализовать?
    #33370762
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень часто приходится проверять данные, введенные пользователем, иногда требуется всего навсего проверить введено число или текст...Вот я подумал, ведь должно быть событие, которое в текстовом поле препятстсвует вводу не правильного символа, например буквы в поле, где должно быть число. Т.е. просто никак не отреагировать на нажатие клавиши...Я посмотрел все события текстового блока, но так и не нашел такой возможности. Подкажите, если это возможно, как это реализовать?


И второй вопрос(неохота темы плодить).
Visual Basic 6 принципиально не хочет работать с Access выше 97 ? Или все таки есть возможность скачать какое-нибудь обновление?
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33370942
Фотография Mix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касаемо первого вопроса:
просто вешай на событие KeyPress програмную проверку введенного символа. Это событие передает код нажатой кнопки. С помощью Chr() можно определить какая клавиша нажата или проверять диапазон: попадает ли этот параметр в диапазон ASCII кодов символов. Если нет - то удалять последний символ.


А по поводу второго вопроса не очень понятно: VB нормально цепляется как к Access 2000 так и к 2003.
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33371123
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vb 6 потдерживает выше 97
но для создния базы данных если пользуешь
visual data manager то он не потдерживает выше 97
создай в Accesse 2002 базу а потом соеденись через Vb 6
проблем не будет
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33371144
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) = True Then
KeyAscii = 0
End If
End Sub

при вводе не числового значения не печатает
Но прблема запятых остается для ввода дробной части
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33371276
1.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Declare Function IsCharAlphaA Lib "user32" ( _
  ByVal bytChar As Byte) As Long
Private Declare Function IsCharAlphaNumericA Lib "user32" ( _
  ByVal bytChar As Byte) As Long

Public Function fnIsCharNumeric( _
  ByVal intChar As Integer) As Boolean

    fnIsCharNumeric = CBool(IsCharAlphaNumericA(intChar)) _
      And Not CBool(IsCharAlphaA(intChar))
End Function

Public Function fnIsCharSymbol( _
  ByVal intChar As Integer) As Boolean
    fnIsCharSymbol = CBool(IsCharAlphaA(intChar))
End Function

Private Sub TextBox1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyBack Then Exit Sub
    
    ' Запрет ввода букв.
    If fnIsCharSymbol(KeyAscii) Then KeyAscii =  0 
    ' Запрет ввода цифр.
    'If fnIsCharNumeric(KeyAscii) Then KeyAscii = 0
End Sub

2. Вроде нормально работает с Access >= 2000.
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33371494
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое, первый вопрос понял.
А вот с доступом к базе 2000 и 2002 все таки у меня не получается...может быть я что-то не так делаю...
Использую стандартный компонент Data для доступа к базе Access. С преобразованной базой в формат Access 97 все работает, а с 2000 и 2002 не хочет работать...Все бы ничего, но не дает Access 2002 редактировать базу 97 из себя, что весьма неудобно...только либо посредством VB либо преобразую к 2002, добавляю/изменяю и преобразую обратно...жуть вообщем...

при использовании компонента Data, а также попытки загрузить базу через VisData , получаю такую ошибку: unrecognized databasa format ' путь ' number3343
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33371661
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не используй Data
Используй Adodc или DataEnv..... и все будет в порядке
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33374882
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй либо ADODC, либо програмно подключайся.
я обычно это делаю в модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Option Explicit
Public cnn As ADODB.Connection
Public prov As String

Public Sub conect()

    Set cnn = New ADODB.Connection
    cnn.CursorLocation = adUseClient

    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\base\base.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"

End Sub
еще ни разу не было проблем с доступом к Access >=2000
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33385770
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с вот такой еще проблемой пишу так:
Private Sub DATArasrabotkiUP1_KeyPress(KeyAscii As Integer)
If Len(DATArasrabotkiUP1.Text) = 2 Or Len(DATArasrabotkiUP1.Text) = 4 Then
If KeyAscii <> 8 Then KeyAscii = 0
If KeyAscii <> 47 Then KeyAscii = 0
End If
End Sub

И так
Private Sub DATArasrabotkiUP1_KeyPress(KeyAscii As Integer)
If Len(DATArasrabotkiUP1.Text) = 2 Or Len(DATArasrabotkiUP1.Text) = 4 Then
If KeyAscii <> 8 or KeyAscii <> 47 Then KeyAscii = 0
End If
End Sub

и так
Private Sub DATArasrabotkiUP1_KeyPress(KeyAscii As Integer)
If Len(DATArasrabotkiUP1.Text) = 2 Or Len(DATArasrabotkiUP1.Text) = 4 Then If KeyAscii <> 8 or KeyAscii <> 47 Then KeyAscii = 0
End Sub

И работать не желает ни в какую, хотя сли оставить только KeyAscii <> 47 или KeyAscii <> 8 ...Какой-нибудь из них один, все работает, ято я делаю не так?
А вот так вот работает
If KeyAscii <> 8 Then
If Not IsNumeric(Chr(KeyAscii)) = True Then KeyAscii = 0
End If
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33387859
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот фильтр.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If (KeyAscii >  47  And KeyAscii <  58 ) Or (KeyAscii =  8  Or KeyAscii =  44  Or KeyAscii =  13  Or KeyAscii =  46 ) Then
    If KeyAscii =  46  Then
     KeyAscii =  44 
    End If
  Else
      MsgBox "В этом поле ожидается ввод цифрами!", vbOKOnly, "Предупреждение"
        KeyAscii =  0 
End If
End Sub
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33389109
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как ограничить ввод определенными символами я уже понял. Мне не понятно почему не работает тот код который я выложил превидущим постом... Вроде как бы должен работать.

И при таком коде(автоматическое добавление символа)
Код: plaintext
1.
2.
3.
4.
Private Sub DATArasrabotkiUP1_KeyPress(KeyAscii As Integer)
If Len(DATArasrabotkiUP1.Text) = 2 Then
DATArasrabotkiUP1.Text = DATArasrabotkiUP1.Text & "/"
End If
End Sub

Курсор перемещается на начало TextBox , а как бы его вернуть в конец чтроки, чтобы пользовательпродолжил писать текст после символа / ?
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33389122
dar55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет позиции курсора вопрос снимается...разобрался.
А вот почему тот код не работает все таки интересно.
...
Рейтинг: 0 / 0
Каким образом реализовать?
    #33389714
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DATArasrabotkiUP1.SelText = DATArasrabotkiUP1.Text & "/"
на счет курсора
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Каким образом реализовать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]