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


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


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

при вводе не числового значения не печатает
Но прблема запятых остается для ввода дробной части
...
Рейтинг: 0 / 0
10.11.2005, 14:11:36
    #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
10.11.2005, 15:13:04
    #33371494
dar55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом реализовать?
Спасибо большое, первый вопрос понял.
А вот с доступом к базе 2000 и 2002 все таки у меня не получается...может быть я что-то не так делаю...
Использую стандартный компонент Data для доступа к базе Access. С преобразованной базой в формат Access 97 все работает, а с 2000 и 2002 не хочет работать...Все бы ничего, но не дает Access 2002 редактировать базу 97 из себя, что весьма неудобно...только либо посредством VB либо преобразую к 2002, добавляю/изменяю и преобразую обратно...жуть вообщем...

при использовании компонента Data, а также попытки загрузить базу через VisData , получаю такую ошибку: unrecognized databasa format ' путь ' number3343
...
Рейтинг: 0 / 0
10.11.2005, 16:07:23
    #33371661
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом реализовать?
Не используй Data
Используй Adodc или DataEnv..... и все будет в порядке
...
Рейтинг: 0 / 0
12.11.2005, 10:06:10
    #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
18.11.2005, 09:02:39
    #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
18.11.2005, 20:30:01
    #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
21.11.2005, 08:33:47
    #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
21.11.2005, 08:43:42
    #33389122
dar55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом реализовать?
Насчет позиции курсора вопрос снимается...разобрался.
А вот почему тот код не работает все таки интересно.
...
Рейтинг: 0 / 0
21.11.2005, 12:36:51
    #33389714
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом реализовать?
DATArasrabotkiUP1.SelText = DATArasrabotkiUP1.Text & "/"
на счет курсора
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Каким образом реализовать? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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