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

InterBase: пароль запрашивается столько раз, сколько форм в проекте

07.06.2014, 05:23. Показов 1570. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подключаюсь к БД (на базе IB Expert), стандартный набор компонентов для подключения.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBDataSet1: TIBDataSet;
    IBDataSet1ID: TIntegerField;
    IBDataSet1N: TIBStringField;
    IBDataSet1SN: TIBStringField;
    IBDataSet1T: TIBStringField;
    DBGrid1: TDBGrid;
    IBTable1: TIBTable;
    IBTable1ID: TIntegerField;
    IBTable1SN: TIBStringField;
    IBTable1N: TIBStringField;
    IBTable1T: TIBStringField;
    DataSource1: TDataSource;
Все подключает но проблема, в том что у меня 6 форм на каждой эти компоненты, при компиляции спрашивает пароль ровно столько же раз сколько и форм =_=*
Что пробовала:
Пробовала прописывать конект через процедуру форм криете, и дисконект при закрытии формы и все равно спрашивет.
Форм много на 5 ой таблице пришит что то типо "слишком много подключений"
Буду благодарна за подсказку =)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2014, 05:23
Ответы с готовыми решениями:

Сколько раз нажимаем на кнопку, столько раз выходит картинка
Как реализовать действие: сколько раз нажимаем на кнопку,столько раз выходит картинка. C#

Вывести запись столько раз, сколько требуется
Приветствую! Допустим, есть таблица: ID|TITLE 1|Иванов 2|Петров 3|Сидоров Есть перечень id....

Выводит столько раз, сколько обращается к файлу
Здравствуйте, написал код, который работает как мне нужно, но выводит он несколько раз ...

Запуск thread столько раз сколько нужно
Здравствуйте дорогие форумчане!:scratch: Нужно мне реализовать один thread внутри того же класса...

8
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 5
07.06.2014, 07:20 2
на каждой форме свое подключение. Надо использовать одно общее подключение. тогда и пароль будет спрашиваться один раз.
0
2 / 2 / 1
Регистрация: 12.12.2012
Сообщений: 67
07.06.2014, 09:12  [ТС] 3
Это я и так знаю. Но как лучше сделать ?

Добавлено через 1 час 23 минуты
Попробовала сделать через модуль две формы, при компиляции выдает ошибку.
"Project xxxx raised exception class yyyyy with message 'zzzzzz'."
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
program Project1;
 
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3},
  Unit4 in 'Unit4.pas' {Form4},
  Unit5 in 'Unit5.pas' {Form5},
  Unit6 in 'Unit6.pas' {Form6},
  Unit7 in 'Unit7.pas' {Form7},
  Unit8 in 'Unit8.pas' {Form8},
  Unit9 in 'Unit9.pas' {DataModule9: TDataModule};
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3); //Флажок стоит  тут
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TForm5, Form5);
  Application.CreateForm(TForm6, Form6);
  Application.CreateForm(TForm7, Form7);
  Application.CreateForm(TForm8, Form8);
  Application.CreateForm(TDataModule9, DataModule9);
  Application.Run;
Сам юнит
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
unit Unit3;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IBTable, DB, IBCustomDataSet, Grids, DBGrids, StdCtrls,
  ExtCtrls, DBCtrls, IBDatabase;
 
type
  TForm3 = class(TForm)
    DBGrid1: TDBGrid;
    IBDataSet1: TIBDataSet;
    IBDataSet1ID: TIntegerField;
    IBDataSet1N: TIBStringField;
    IBDataSet1SN: TIBStringField;
    IBDataSet1T: TIBStringField;
    IBTable1: TIBTable;
    IBTable1ID: TIntegerField;
    IBTable1SN: TIBStringField;
    IBTable1MP: TIntegerField;
    IBTable1M: TIBStringField;
    IBTable1OC: TIBStringField;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    Button1: TButton;
    Button2: TButton;
  
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form3: TForm3;
 
implementation
 
    uses Unit9;
 
{$R *.dfm}
 
 
 
 
 
 
 
 
procedure TForm3.Button1Click(Sender: TObject);
begin
DataModule9.IBTransaction1.Commit;
IBTable1.Active:=true;
end;
 
procedure TForm3.Button2Click(Sender: TObject);
begin
DataModule9.IBTransaction1.Rollback;
IBTable1.Active:=true;
end;
 
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     DataModule9.IBDatabase1.Connected:= false ;
end;
 
procedure TForm3.FormCreate(Sender: TObject);
begin
IBTable1.Database:=DataModule9.IBDatabase1;
IBTable1.Transaction:=DataModule9.IBTransaction1;
DataModule9.IBDatabase1.Connected:=true;
IBTable1.Active:=true;
 
end;
 
end.
0
1180 / 421 / 107
Регистрация: 31.03.2012
Сообщений: 1,150
07.06.2014, 09:36 4
Цитата Сообщение от Yuki58 Посмотреть сообщение
проблема, в том что у меня 6 форм на каждой эти компоненты, при компиляции спрашивает пароль ровно столько же раз сколько и форм
и на каждой все эти же датасеты, транзакции, датабазы?
Цитата Сообщение от Yuki58 Посмотреть сообщение
IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; IBDataSet1: TIBDataSet;
вроде в коде есть определение датамодуля, неужели невозможно разместить все нужное в этом модуле, а в остальных обращаться через него ко всем этим Transaction, DataSet и т.д
0
2 / 2 / 1
Регистрация: 12.12.2012
Сообщений: 67
07.06.2014, 09:59  [ТС] 5
Цитата Сообщение от Joeymax Посмотреть сообщение
вроде в коде есть определение датамодуля, неужели невозможно разместить все нужное в этом модуле, а в остальных обращаться через него ко всем этим Transaction, DataSet и т.д
Начала делать в модуле пошли ошибки в компиляции.
Которые описала выше.
0
1180 / 421 / 107
Регистрация: 31.03.2012
Сообщений: 1,150
07.06.2014, 10:11 6
Yuki58,выложи проект, уверен, что здесь смогут помочь. Или в личку, попробую подсказать
1
2 / 2 / 1
Регистрация: 12.12.2012
Сообщений: 67
07.06.2014, 10:14  [ТС] 7
Как раз запаковывать закончила)
Так по поводу проекта с модулем: Пробовала удалять все процедуры где вылазиет баг с криете, ни чем не помогло =_=
Вложения
Тип файла: rar курсовой проект.rar (1.15 Мб, 7 просмотров)
0
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
07.06.2014, 12:47 8
Лучший ответ Сообщение было отмечено Yuki58 как решение

Решение

Надо в списке форм, создаваемых при запуске программы, датамодуль поместить на первое место.
Перед тем как будет создана Form1. Это можно сделать и тексте проекта (Project1.dpr) или через
дельфийское меню Project -> Options... На закладке Forms в левом списке мышкой переместить
датамодуль вверх списка.

В варианте "С модулем" текст проекта Project1.dpr испорчен: там не хватает строки Application.Run; перед end.

Во всех модулях при их создании (процедуры FormCreate) оставить только строку IBTable1.Active:=true;. Все остальное лишнее.

Добавлено через 10 минут
И не надо прерывать соединение с базой при каждом закрытии форм.
Эту строку исключить из всех модулей:
Delphi
1
DataModule9.IBDatabase1.Connected:= false;
Соединение с базой должно осуществляться при создании датамодуля (его событие OnCreate),
а закрывать соединение нужно когда программа закрывается (в датамодуле событие OnDestroy).
1
2 / 2 / 1
Регистрация: 12.12.2012
Сообщений: 67
07.06.2014, 13:36  [ТС] 9
Спасибо
0
07.06.2014, 13:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2014, 13:36
Помогаю со студенческими работами здесь

Копирование строк столько раз, сколько заданно в ячейке
Всем привет! подскажите пожалуйста: Как скопировать строку столько раз, сколько заданно в...

Вывести символ столько раз, сколько введет пользователь
Ребят, подскажите, пожалуйста как вывести символ (любой) столько раз, сколько введет пользователь?...

Вывести надпись в строке столько раз, сколько выведено строк
Мне нужно сделать что то на подобии прогрессии. Объясняю: Ставится цикл на for(int i=1; i...

Копирование строк столько раз, сколько заданно в ячейке с разбиением первоначальной
Всем привет! подскажите пожалуйста: Как скопировать строку столько раз, сколько заданно в...

Вывести свое имя на экран столько раз, сколько в нем букв
Вывести своё имя на экран столько раз, сколько в нем букв. максим имя

Как сделать, чтобы цикл повторялся столько раз, сколько забито в переменной?
Как сделать, чтобы цикл повторялся столько раз, сколько забито в переменной? Например переменная...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru