Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239

Изменить в процессе выполнения на запрос с параметром

10.10.2015, 20:41. Показов 1170. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, где ошибка?
В qBD указан запрос Select*from сотрудники
надо по фамилии сотрудника вытащить из таблицы его пароль и присвоить его переменной UserIN (далее сверю с тем паролем который введет пользователь).
И вот- Пробую изменить простой запрос на запрос с параметрами и выдает ошибку (см. скрин).
для проверки пробую его вывести в Label1, но в ошибке жалуется раньше - на UserUser/

Pascal
1
2
3
4
5
6
7
8
9
10
procedure TfrmIN.Button1Click(Sender: TObject);
begin
qBD.Close;
qBD.SQL.Clear;
qBD.SQL.Text:='Select  [пароль] from [сотрудники] WHERE [фамилия] =:"+UserUser+"';
qBD.Parameters.ParamByName('UserUser').Value:=UserIN;
qBD.Open;
ParolIN:=qBD.FieldByName('пароль').AsString;
Label1.Caption:=ParolIN;
end;
Миниатюры
Изменить в процессе выполнения на запрос  с параметром  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2015, 20:41
Ответы с готовыми решениями:

Ошибка в процессе выполнения
Вот код программы. Выдает ошибку Expression: stream.valid() в процессе выполнения define _CRT_SECURE_NO_WARNINGS #include...

Как в режиме выполнения программы изменить запрос в поле "источник записи"
Как в режиме выполнения программы изменить запрос в поле 'источник записи' Есть такой код If Me.Tf.Value = 2 Then ...

Прерывание программы в процессе выполнения
Доброго времени суток! Подскажите, есть ли возможность прерывать программу во время выполнения? Т.е. у меня в программе есть цикл,...

5
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
10.10.2015, 21:06
Лучший ответ Сообщение было отмечено mserg1972 как решение

Решение

Delphi
1
qBD.SQL.Text:='Select  [пароль] from [сотрудники] WHERE [фамилия] = :UserUser';
Добавлено через 1 минуту
И надо добавить проверку на то, что была найдена хотя бы одна запись.

Добавлено через 1 минуту
Строки 3, 4 не нужны.
1
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
11.10.2015, 01:15
Цитата Сообщение от FIL Посмотреть сообщение
Строки 3, 4 не нужны.
3-я может быть нужна. Или я чего=то не знаю?
1
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
11.10.2015, 07:26  [ТС]
Поправил, но все равно ошибка (скрин).
Выложу весь код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
unit LogIN;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls, Data.DB, Vcl.DBCtrls, Data.Win.ADODB, Vcl.Grids, Vcl.DBGrids;
 var
userIN: string; //глобальная переменная,хранит фамилию вошедшего пльзователя
ParolIN:String; //глобальная переменная,хранит пароль пльзователя
type
  TfrmIN = class(TForm)
    pwdLabel: TLabel;
    passwordEdit: TEdit;
    LogInButton: TButton;
    DB: TADOConnection;
    qDB: TADOQuery;
    Label1: TLabel;
    dsDB: TDataSource;
    dbcboxUser: TDBComboBox;
    Label2: TLabel;
    procedure LogInButtonClick(Sender: TObject);
    procedure dbcboxUserChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
 
   private
    { Private declarations }
  public
    { Public declarations }
    class function Execute : boolean;
  end;
 
var
  frmIN: TfrmIN;
 
implementation
 
{$R *.dfm}
 
class function TfrmIn.Execute: boolean;
begin
  with TfrmIn.Create(nil) do
  try
    Result := ShowModal = mrOk;
  finally
    Free;
  end;
 end;
 
 
 
procedure TfrmIN.FormCreate(Sender: TObject);
begin
with qDB do begin
open;
while not EOF do
begin
dbcboxUser.items.add(FieldByName('фамилия').AsString);
next;
end;
end;
dbcboxUser.text := dbcboxUser.items[0];
UserIN := '';
UserIN := dbcboxUser.items[0];//Заносим фамилию (по умолчанию)
Label2.Caption:=UserIN;       // в глобальную переменную
end;
 
procedure TfrmIN.FormActivate(Sender: TObject);
begin
passwordEdit.SetFocus;
end;
 
procedure TfrmIN.dbcboxUserChange(Sender: TObject);
begin
 UserIN := dbcboxUser.text;//Заносим выбранную фамилию в глобальную переменную
 Label2.Caption:=UserIN;
 passwordEdit.text:='';
 passwordEdit.Setfocus;
end;
 
procedure TfrmIN.LogInButtonClick(Sender: TObject);
begin
qDB.Close;
qDB.SQL.Clear;
qDB.SQL.Text:='Select * from [сотрудники] WHERE [фамилия] = :UserUser';
qDB.Parameters.ParamByName('UserUser').Value:=UserIN;
qDB.Parameters.Refresh;
qDB.Open;
ParolIN:=qDB.FieldByName('пароль').AsString;
Label2.Caption:=ParolIN;
if passwordEdit.Text = ParolIN then
    ModalResult := mrOK
  else
    ModalResult := mrAbort;
end;
 
end.
Миниатюры
Изменить в процессе выполнения на запрос  с параметром  
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
11.10.2015, 11:27
Цитата Сообщение от northener Посмотреть сообщение
3-я может быть нужна
ДатаСет автоматически закрывается при внесении изменений в запрос.

Добавлено через 10 минут
Цитата Сообщение от mserg1972 Посмотреть сообщение
все равно ошибка
Попробуй добавить:
Delphi
1
qDB.Parameters.ParamByName('UserUser').DataType := ftString;
0
1 / 1 / 2
Регистрация: 18.12.2013
Сообщений: 239
11.10.2015, 16:25  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TfrmIN.LogInButtonClick(Sender: TObject);
begin
qDB.Close;
qDB.SQL.Clear;
qDB.SQL.Text:='Select * from [сотрудники] WHERE [фамилия] = :UserUser';
qDB.Parameters.ParamByName('UserUser').DataType := ftString;
qDB.Parameters.ParamByName('UserUser').Value:=UserIN;
qDB.Parameters.Refresh;
qDB.Open;
ParolIN:=qDB.FieldByName('пароль').AsString;
Label2.Caption:=ParolIN;
if passwordEdit.Text = ParolIN then
    ModalResult := mrOK
  else
    ModalResult := mrAbort;
end;
 
end.
Ошибка та же

Добавлено через 3 часа 38 минут
Сейчас голова лопнет.Если в компоненте в запросе указать явно-все работает, а из кода не могу в запрос передать правильно значение переменной.

Добавлено через 1 час 8 минут
Заработало, проблема была в том, что наименования столбцов и таблицы были включены в квадратные скобки
И кстати если не закрыть запрос, то переменная не передается в параметр запроса.

Вот рабочий код
Delphi
1
2
3
4
5
6
7
8
9
procedure TfrmIN.Button1Click(Sender: TObject);
begin
qDB2.close;
qDB2.SQL.Text:='Select фамилия,пароль from сотрудники WHERE фамилия =:UserUser';
qDB2.Parameters.ParamByName('UserUser').Value:=UserIN;
qDB2.Open;
ParolIN:=qDB2.FieldByName('пароль').AsString;
Label3.Caption:=ParolIN;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2015, 16:25
Помогаю со студенческими работами здесь

Изменяемая программа в процессе выполнения
Всем привет. Недавно меня посетила фантазия и я решил сделать программу, изменяющуюся во время ее исполнения. С чем мне нужна помощь: 1)...

Ошибка в процессе выполнения программы
Здравствуйте, не могу понять, почему выводится ошибка, что команда не найдена в 4 строке, где if, как я понимаю он ругается на -lt, что...

Уведомление в процессе выполнения макроса
подскажите как сделать уведомление в процессе выполнения макроса типа: "пожалуйста,подождите..."?

Изменение PE-заголовка в процессе выполнения программы
Доброго времени суток! Задался задачей изменить часть PE-заголовка в процессе выполнения программы (сразу хочу оговориться, что это не...

Лишние символы в процессе выполнения проги
Когда я запускаю программу на выполнение вроде всё работает, но выводится вместе с нужной строкой какая-то абракадабра - куча ненужных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru