| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | «  : 08-02-2004 13:31 »  |  | 
 
 Never (и все остальные    ) Я тебе уже жаловалась, что у меня не идет VBA, теперь я упрастила все до минимума.  Теперь при нажатии запрашивается пароль, и если пароль верен, то открывается форма.  Но где (с каком месте) я должно поставить " * ", что бы вводимого пароля не было видно.        stPasswordA = "Пароль"     stPasswordU = InputBox("Введите пароль", "Ввод пароля")         If stPasswordA = stPasswordU Then     stDocName = "Журнал хозяйственных операций"     DoCmd.OpenReport stDocName, acPreview     Else     MsgBox "Пароль не верен!"     End If  :!: Это черновой вариант, как узнаю где ставить * то сразу включу его в курсовой.  :idea:  Я понимаю, что это вопрос не по курсу, но надо же было его где то задать. Не открывать же для этого новую тему.   |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Never | 
								|  | « Ответ #1 : 08-02-2004 15:39 »  |  | 
 
 Алёна, не пробовала в Экцессе, на в VB я бы не долбалась с Инпутом, а поставила на пороль обычное текстовое поле. У него есть свойство PasswordChar, которое как раз задает символ, вводящийся вместо символов пароля... |  
						| 
								|  |  
								|  |  Записан | 
 
 не умеете летать- не мучайте метлу! |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #2 : 08-02-2004 17:09 »  |  | 
 
 Т.е. ты предлагаешь для ввода пароля создать форму с текстовым полем?
 По моему это дольше,
 ведь надо сначала создать форму с полем, Потом ввести переменную, а затем закрыть форму и начать обрабатывать переменную. Это занимает больше чем шесть строчек.
 
 :?: Может всё-таки кто-нибудь знает как в InputBox выводить звёздочки*.
 
 P.S. А можно ли создавать временную форму, а затем удалять её. Если Да, то как. (И как на ней создать текстовое поле.)
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #3 : 09-02-2004 16:00 »  |  | 
 
 В таком случае, у меня возникает маленькая проблема. Почему-то у "Поле2" (в которое я ввожу пароль) нет свойства Caption.  И поэтому я не могу введенное значение присвоить переменной. Следовательно я не могу сравнивать переменные. И в результате у меня всегда выдает "Пароль не верен!"        Dim stDocNameF As String     Dim stPasswordA As String     Dim stPasswordU As String                stPasswordA = "Пароль"     ' stPasswordU = Поле2.Caption                     If stPasswordA = stPasswordU Then     stDocNameF = "Журнал хозяйственных операций"     DoCmd.OpenReport stDocNameF, acPreview     Else     MsgBox "Пароль не верен!"     End If      :?:  Как мне присвоить переменной значение "Поле2" |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Never | 
								|  | « Ответ #4 : 09-02-2004 16:05 »  |  | 
 
 Если ты имеешь в виду компонент "Текстовое поле"(TextBox), то у него по определению нет свойства Caption. Вместо этого у него есть свойство Text, со значение которого поступают аналогично и его значение спокойно можно присваивать переменной. |  
						| 
								|  |  
								|  |  Записан | 
 
 не умеете летать- не мучайте метлу! |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #5 : 09-02-2004 17:53 »  |  | 
 
 Когда я ставлю:stPasswordU = Trim(Поле2.Text) кнопка вообще не работает. В этом случае не выдается даже сообшения "Пароль не верен!" Может дело в несоответствии типов полей :?:   Но текстовое поле по моему имеет тип String, и переменная к которой присваеваем тоже имеет тип String. Значит несоответствий быть не должно. Не могу найти ошибку. По идее всё должно ратотать   |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Dimyan 
								Гость
 | 
								|  | « Ответ #6 : 10-02-2004 13:17 »  |  | 
 
 Я в VBA не силен (точнее вообще его не знаю) но вообще считывание информации и присвоение ее переменной производится так:  string MyString = MyTextBox.Text;  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #7 :  10-02-2004 14:30 »   |  | 
 
 Строки stPasswordU = Trim(Поле2.Text)
 
  и  string MyString = MyTextBox.Text;
 
  идентичны, Т.к. stPasswordU  имеет тип String, а Trim просто убирает пробелы. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Dimyan 
								Гость
 | 
								|  | « Ответ #8 : 11-02-2004 04:22 »  |  | 
 
 Алёна,  значит смотри свой код на ошибки.такой код должен нормально работать и уж тем болие не болжен влиять на кнопку
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Never | 
								|  | « Ответ #9 : 11-02-2004 08:12 »  |  | 
 
 Не знаю как работает Экцесс на поиск ошибок в коде... Если там этого нет, может у тебя под рукой найдется нормальный Бэйсик? Перенесла бы туда код и запустила дебаг: увидишь не чем застрянешь. |  
						| 
								|  |  
								|  |  Записан | 
 
 не умеете летать- не мучайте метлу! |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #10 : 11-02-2004 14:33 »  |  | 
 
 Представляете, когда я разделила старое событие на два разных, у меня получилось    Почему, не знаю, может кто может объяснить на будующее :?:  А то каждый раз действовать методом научного тыка как-то долго получается   Public stPasswordU As String Public stPasswordA As String Private Sub Кнопка6_Click()     Dim stDocNameF As String     stPasswordA = "Пароль"     If stPasswordA = stPasswordU Then     stDocNameF = "Журнал хозяйственных операций"     DoCmd.OpenReport stDocNameF, acPreview     Else     MsgBox "Пароль не верен!"     End If     End Sub Private Sub Поле2_LostFocus() stPasswordU = Поле2.Text End Sub  :oops: А Бейсика уменя нет никакого. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Never | 
								|  | « Ответ #11 : 11-02-2004 16:19 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 не умеете летать- не мучайте метлу! |  |  | 
	| 
			| 
					
						| Dusk 
								Команда клуба
								
								   Offline 
								Пол:    
								Редкий, но веселый вид
								
								
								
								
								
							 | 
								|  | « Ответ #12 : 16-02-2004 08:23 »  |  | 
 
 Never,  Привет, я вернулся, предложение в силе - готов работать... 8)  8)  8) Алёна ,  а зачем ты вообще считываешь введенный пароль в переменную? (тем более по потере фокуса)  Ведь все должно быть проще:  твоя строка проверки If stPasswordA = Поле2.Text Then и т.д. Тогда Private Sub Поле2_LostFocus()  не нужно совсем...   |  
						| 
								|  |  
								|  |  Записан | 
 
 Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставшихОпыт - это то, что появляется сразу после того, как он был так необходим...
 Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
 |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #13 : 16-02-2004 15:18 »  |  | 
 
 Ведь все должно быть проще:
 твоя строка проверки
 If stPasswordA = Поле2.Text Then и т.д.
 
 Пробовала, не получается.    Работает только в этом варианте. Почему не знаю. Когда делала всю обработку в одном событии, ничего не получалось (см. выше). А где в Access искать коды ошибок я не знаю. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Dimyan 
								Гость
 | 
								|  | « Ответ #14 : 17-02-2004 04:15 »  |  | 
 
 Алёна,  там в справки должно быть написано, на сколько я знаю в Access справочка даже русская. Коды ошибок в справке обязательно быть должны. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Dusk 
								Команда клуба
								
								   Offline 
								Пол:    
								Редкий, но веселый вид
								
								
								
								
								
							 | 
								|  | « Ответ #15 : 17-02-2004 06:55 »  |  | 
 
 Алёна, поставь точку прерывания на этой строке. В поле Immediate напиши ? Поле2.Text
 Нажми Enter  и посмотри, какое значение имеет поле....
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставшихОпыт - это то, что появляется сразу после того, как он был так необходим...
 Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
 |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #16 : 17-02-2004 18:32 »  |  | 
 
 Коды ошибок в справке обязательно быть должны.
 
 Конечно должны быть, но я даже не знаю какой код у моей ошибки. Ведь при выполнении 1 варианта никаких сообщений не выдается В поле Immediate
 
 А это что за поле? Когда я присваиваю значение поле какому-то текстовому объекту Тоже никакой реакции. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Dusk 
								Команда клуба
								
								   Offline 
								Пол:    
								Редкий, но веселый вид
								
								
								
								
								
							 | 
								|  | « Ответ #17 : 18-02-2004 06:05 »  |  | 
 
 Алёна, поле Immediate показывает информацию вызванную командами,  набранных в нем. Включается Ctrl+G или в меню View. Отображается обычно ниже окна с кодом программы.Never,  послание не пришло....
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставшихОпыт - это то, что появляется сразу после того, как он был так необходим...
 Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
 |  |  | 
	| 
			| 
					
						| HandKot 
								Молодой специалист    Offline | 
								|  | « Ответ #18 : 18-02-2004 06:29 »  |  | 
 
 Алёна, попробовал твой код в акцессе (пример где обработка одного события) и он выдал ошибку "Невозможно обратиться к свойству или методу элемента управления, пока на этот элемент не установлен фокус ввода"
 поэтому у тебя процедура вылетала по ошибке и ничего не происходило, а второй пример (с двумя событиями) отрабатывал правильно
 |  
						| 
								|  |  
								|  |  Записан | 
 
 I Have Nine Lives You Have One OnlyTHINK!
 |  |  | 
	| 
			| 
					
						| HandKot 
								Молодой специалист    Offline | 
								|  | « Ответ #19 : 18-02-2004 06:36 »  |  | 
 
 и еще Алёна, в акцессе Значение «Пароль» свойства Маска ввода (InputMask) создает элемент управления, предназначенный для ввода пароля. Любые знаки, вводящиеся в этот элемент управления будут отображаться на экране звездочками (*). Подобная маска ввода используется для предотвращения вывода на экран вводящихся знаков
 
 Поле2.InputMask = "Password"
 
 попробуй
 |  
						| 
								|  |  
								|  |  Записан | 
 
 I Have Nine Lives You Have One OnlyTHINK!
 |  |  | 
	| 
			| 
					
						| Dusk 
								Команда клуба
								
								   Offline 
								Пол:    
								Редкий, но веселый вид
								
								
								
								
								
							 | 
								|  | « Ответ #20 : 18-02-2004 06:43 »  |  | 
 
 Алёна, исходя из ошибки, описанной HandKot,  обращайся не к Поле2.Text, а к Поле2.Value. |  
						| 
								|  |  
								|  |  Записан | 
 
 Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставшихОпыт - это то, что появляется сразу после того, как он был так необходим...
 Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
 |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #21 : 18-02-2004 16:28 »  |  | 
 
 попробуй
 
 А у меня это есть, т.к. я эту позицию устанавливала через свойства,  поэтому в програмном коде она на отразилась. обращайся не к Поле2.Text, а к Поле2.Value.
 
 Почему, ведь свойство Text содержит строковое выражение, отображаемое в поле, а свойство Value содержит строковое выражение, находящееся в текстовом поле. Разница по смыслу не существенная, а в результате очень даже. Теперь исходный код у меня имеет вид: Private Sub Кнопка6_Click()     Dim stPasswordU As String     Dim stPasswordA As String     Dim stDocName As String     Dim stLinkCriteria As String     stPasswordU = Поле2.Value     stPasswordA = "Пароль"     If stPasswordA = stPasswordU Then        stDocName = "Фирма"     DoCmd.OpenForm stDocName, , , stLinkCriteria     Else     MsgBox "Пароль не верен!"     Поле2.Value = ""     Поле2.SetFocus     End If     End Sub  :?: Как его ещё можно усовершенствовать. p.S. Справку к этой форме я уже сделала, подсказки всплывают. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Dusk 
								Команда клуба
								
								   Offline 
								Пол:    
								Редкий, но веселый вид
								
								
								
								
								
							 | 
								|  | « Ответ #22 : 19-02-2004 06:18 »  |  | 
 
 Алёна,  Ты правильно сказала: ведь свойство Text содержит строковое выражение, отображаемое в поле, а свойство Value содержит строковое выражение, находящееся в текстовом поле
 
 Text всего лишь отображение текста, и обратиться к нему можно только установив фокус на поле, а Value - переменная контрола. К ней можно обратиться всегда (если форма загружена), даже если фокус на другой форме: ИмяФормы.ИмяКонтрола.Value... В некоторых контролах отображение (Text) не всегда равно значению (Value), например Выпадающий Дурак (DropDown или в Access - ПолеСоСписком). В нем не редко отображается текст (Единицы измерения, Город, Партнер и т.д...) из справочника, а значение - ключ выбранного текста, для поиска/фильтрации в другой таблице.... Я понимаю, что высказанное мной немного сумбурно, но обещаю подготовить дополнение к урокам Невы (если этого там нет), где поподробнее распишу такие свойства контролов....  Неве, Вот и дополнение всплыло   |  
						| 
								|  |  
								|  |  Записан | 
 
 Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставшихОпыт - это то, что появляется сразу после того, как он был так необходим...
 Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
 |  |  | 
	| 
			| 
					
						| Dusk 
								Команда клуба
								
								   Offline 
								Пол:    
								Редкий, но веселый вид
								
								
								
								
								
							 | 
								|  | « Ответ #23 : 19-02-2004 06:23 »  |  | 
 
 Алёна,  Как его ещё можно усовершенствовать.
 
 У тебя присутствует ненужное присваивание: stPasswordU = Поле2.Value
 
 Убери его, а вместо: If stPasswordA = stPasswordU Then
 
 Напиши: If stPasswordA = Поле2.Value Then  На современных машинах, лишние операции такого плана мало заметны, даже если будут выполняться в цикле или рекурсии, но это совсем ненужная опирация, т.к. Поле2.Value - уже сама по себе переменная и ты ее можешь использовать напрямую... И как говориться в рекламе:"Зачем платить дважды?"   |  
						| 
								|  |  
								|  |  Записан | 
 
 Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставшихОпыт - это то, что появляется сразу после того, как он был так необходим...
 Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
 |  |  | 
	| 
			| 
					
						| Never | 
								|  | « Ответ #24 : 19-02-2004 07:15 »  |  | 
 
 Dusk,  дополнение к урокам Невы
 
  во-первых, мы собственно и до контроллов еще не добрались в уроках; во-вторых, я этой фишки с Text и Value не знала (так, что спасибо, доступно объяснил    ) У меня были крайне паршивые учителя   |  
						| 
								|  |  
								|  |  Записан | 
 
 не умеете летать- не мучайте метлу! |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #25 : 19-02-2004 19:28 »  |  | 
 
 На современных машинах, лишние операции такого плана мало заметны
 
 Вот поэтому я их и добавила.     Не солидно включать в курсовую десять строчек на VBA, надо ходя бы одиннадцать    Шучу,     этот кусочек у меня долго не получался. И поэтому со временем оброс мусором. Я ведь сначало пыталась пароль через InputBox вводить. Но у меня не получилось. А когда я посмотрела все возможные параметры его, поняла почему. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #26 : 10-03-2004 15:21 »  |  | 
 
 Пароль у меня теперь прекрасно работает, 
 Но теперь не знаю как введя правильный пароль закрыть старую форму(которая использовалась для его ввода)
 
 Дописала:
 
 DoCmd.Close stDocName2, , acSaveYes
 
 Где stDocName2 имя старой формы. А окно всё равно закрываться не хочет.
 
 Вопрос: Как закрыть форму через VBA? :?:  :?:
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #27 : 10-03-2004 15:44 »  |  | 
 
 я всегда говорил, что девушки-программистки - это чудо    |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Never | 
								|  | « Ответ #28 : 10-03-2004 17:23 »  |  | 
 
 Алексей1153,     надеюсь- это комплимент???Алёна , а окно у тебя там модальное? Или обычную форму надо убрать? Если обычную, попробуй Form.Hide |  
						| 
								|  |  
								|  |  Записан | 
 
 не умеете летать- не мучайте метлу! |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #29 : 10-03-2004 17:39 »  |  | 
 
 я всегда говорил, что девушки-программистки - это чудо
 
 Конечно чудо, а подсказать слабо :twisted:  Хотя бы аналогию из другого языка. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	|  |