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

Связь нескольких баз через delphi

24.10.2016, 12:25. Показов 1364. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте
хочу сделать в sqlservere несколко баз
так чтобы в одной были имена остальных баз (остальные будут одинаковые только название разны)
и чтобы в delphi реализовать вход в первую базу там выбор ныжной базы и переход туда
подскажите как это сделать
если есть пример киньте
заранее благодарен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.10.2016, 12:25
Ответы с готовыми решениями:

Связь через сокеты программ написанных на delphi и C#
Всем привет, помогите разобраться. есть программа написанное на delphi "UR". которое передает по сетевому соединению некую информацию...

Выборка из нескольких таблиц и создание новой записи через Delphi
Здравствуйте! Имеется БД в MS Access, делаю для нее программу в Deplhi. Через DBGrid и ADOQuery выводится такой запрос: SELECT...

Связь разных баз данных
есть база данных BD1 MS SQL и BD2 Firebird можно ли создать запрос в таком виде: Select * from BD1.table, BD2.table where...

20
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
24.10.2016, 12:44
зачем?
1
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
24.10.2016, 12:48  [ТС]
ну например куча баз по городам москва питер киев вних стоматологических клиник , типа клиенты заболевания
я выбираю киев и поподаю в клиентов только киева
москву и только москвы
тоесть идёт переподключения по базам
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
24.10.2016, 12:59
Цитата Сообщение от pek Посмотреть сообщение
ну например куча баз по городам москва питер киев вних стоматологических клиник , типа клиенты заболевания
я выбираю киев и поподаю в клиентов только киева
москву и только москвы
тоесть идёт переподключения по базам
Не надо так делать.
Должен быть справочник городов и таблица клиник.
В таблице клиник - ID города, соответствующий ID в справочнике городов и т.д.

В клиенте задаёте город - и он с этого момента формирует запросы с WHERE CityID=<Выбранный ID города>.
Добавился город - и не придётся создавать таблицу, а ещё страшнее, базу, специально для этого.
Просто добавится ещё одна запись в таблице городов, которую надо будет задать при создании новой клиники.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
24.10.2016, 13:01
Цитата Сообщение от pek Посмотреть сообщение
типа клиенты
Почему не сделать одну таблицу, скажем, по клиентам, в которой будет столбец с городом (или ссылкой на справочник городов)?
0
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
08.08.2017, 03:11  [ТС]
посмотрите пожалуйста / что не так
ошибка "операция недоступна если обьет открыт"
с начало я с помощью procedure TForm2.InitaDatabase1; подключаюсь к общей базе через ini где ip из этой базы выдаю grig
потом procedure TForm2.Button1Click я опять из ini беру ip и из grid я считываю название базы для catalog с помощью cxGrid1DBTableView1.DataController.GetDi splayText(cxGrid1DBTableView1.DataContro ller.FocusedRecordIndex,0).
далее я привязываюсь к edit логин и пароль который в непосредственной базе который выбирается cxGrid1DBTableView1.DataController.GetDi splayText(cxGrid1DBTableView1.DataContro ller.FocusedRecordIndex,0).
я думаю ошибка в логине пароле что то не то выбираю
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
procedure TForm2.Button1Click(Sender: TObject);
var
  IniFile: TIniFile;
 ip,user,password,catalog: string;
  connectionString: string;
  begin
 ADOConnection2.Connected:=false;
 connectionString:='Provider=SQLOLEDB.1;Password=DB_PASSWORD;Persist Security Info=True;User ID=DB_USER;Initial Catalog=DB_DATABASE;Data Source=DB_ADDRESS';
 
 
   IniFile:= TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
 
  ip:= IniFile.ReadString('IpAddresses', 'ip', '');
   catalog:=  cxGrid1DBTableView1.DataController.GetDisplayText(cxGrid1DBTableView1.DataController.FocusedRecordIndex,0) ;
 
  ADOQuery2.Close;
ADOQuery2.SQl.Clear;
ADOQuery2.SQL.Add('select * from users where username='''+Edit1.text+''';');
ADOQuery2.Open;
if ADOQuery2.Recordcount<>0 then
begin
  if ADOQuery2.FieldByName('password').AsString= Edit2.text then
                 user:= IniFile.ReadString('IpAddresses', 'user', '');
                 password:= IniFile.ReadString('IpAddresses', 'password', '');
  connectionString := StringReplace(connectionString,'DB_ADDRESS',ip,[rfReplaceAll, rfIgnoreCase]);
  connectionString := StringReplace(connectionString,'DB_USER',user,[rfReplaceAll, rfIgnoreCase]);
  connectionString := StringReplace(connectionString,'DB_PASSWORD',password,[rfReplaceAll, rfIgnoreCase]);
  connectionString := StringReplace(connectionString,'DB_DATABASE',catalog,[rfReplaceAll, rfIgnoreCase]);
 
 
  ADOConnection2.ConnectionString:=connectionString;
  adoconnection2.LoginPrompt:=false;
  ADOConnection2.Connected:=true;
 
end
  else
ShowMessage('вход не выполнен');//условие если пароль не верный
 
end ;
 
procedure TForm2.InitaDatabase1;     // подключение через ini
var
  IniFile: TIniFile;
 ip,user,password,catalog: string;
  connectionString: string;
  begin
 ADOConnection1.Connected:=false;
 connectionString:='Provider=SQLOLEDB.1;Password=dubovoy;Persist Security Info=True;User ID=dubovoy;Initial Catalog=ОСНОВНАЯ БАЗА;Data Source=DB_ADDRESS';
   IniFile:= TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
   ip:= IniFile.ReadString('IpAddresses', 'ip', '');
  connectionString := StringReplace(connectionString,'DB_ADDRESS',ip,[rfReplaceAll, rfIgnoreCase]);
 
 
 
  ADOConnection1.ConnectionString:=connectionString;
  adoconnection1.LoginPrompt:=false;
  ADOConnection1.Connected:=true;
  end;
 
 
end.
заранее благодарен
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
08.08.2017, 16:20
Цитата Сообщение от pek Посмотреть сообщение
посмотрите пожалуйста / что не так
ты задаешь вопрос по делфи в ветке по БД

Цитата Сообщение от pek Посмотреть сообщение
я думаю ошибка в логине пароле что то не то выбираю
ну так выясняй

тебе уже объяснили что заводить на сервере кучу баз не обязательно
можно хранить все в одной и получить тот же функционал
0
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
09.08.2017, 05:47  [ТС]
подскажите как перенести вопрос в ветку delphi или там тему создать с постом #6
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
09.08.2017, 07:51
напиши модератору ветки
0
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
09.08.2017, 18:02  [ТС]
подскажите плиз стал понимать свои ошибки
но не могу доделать стал писать так
как мне сделать чтобы считанный фокус сразу был виден для запроса
Delphi
1
2
3
4
5
6
catalog:=  cxGrid1DBTableView1.DataController.GetDisplayText(cxGrid1DBTableView1.DataController.FocusedRecordIndex,0) ;
 
ADOQuery2.Close;
ADOQuery2.SQl.Clear;
ADOQuery2.SQL.Add('use catalog select * from users where username='''+Edit1.text+''';');
ADOQuery2.Open;
Добавлено через 7 минут
дошел до этого момента
Delphi
1
ADOQuery2.SQL.Add('use '+ catalog + 'select * from users where username='''+Edit1.text+''';');
но видит вот такое ИМЯБАЗЫselect то есть не правильно
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
09.08.2017, 18:03
а пробел перед select поставить?
1
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
09.08.2017, 18:15  [ТС]
да спасибо.
а подскажите у меня в базе есть
1 username на английском туда захожу
1 username на русском туда не могу зайти
что делать
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
09.08.2017, 18:37
Цитата Сообщение от pek Посмотреть сообщение
что делать
это ваша задача - вам решать
0
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
10.08.2017, 04:38  [ТС]
и всё таки
что можно сделать если не определяет логин написанный на русском а на английском определяет

ошибка входа пользователя "имя пользователя "
0
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
10.08.2017, 05:05
сравнить кодировки в БД и в программе?
0
10.08.2017, 06:45

Не по теме:

да какие там кодировки?
кривые руки
у меня все русские логины в Firedac работали

1
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
10.08.2017, 09:00  [ТС]
подскажите в каком месте руки кривые
0
10.08.2017, 09:19

Не по теме:


1. ты создал тему не в том разделе
2. ты не слушаешь советов что тебе говорят
3. ты пробел сам добавить не можешь
4. ты спрашиваешь, но код свой не показываешь

продолжать?

1
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 376
10.08.2017, 09:54  [ТС]
вот код кнопки
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
procedure TForm2.Button1Click(Sender: TObject);
var
  IniFile2: TIniFile;
 ip,user,password,catalog: string;
  connectionString2: string;
  begin
// ADOConnection2.Connected:=false;
// connectionString2:='Provider=SQLOLEDB.1;Password=DB_PASSWORD;Persist Security Info=True;User ID=DB_USER;Initial Catalog=DB_DATABASE;Data Source=DB_ADDRESS';
 
 
 //  IniFile2:= TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
 
//  ip:= IniFile2.ReadString('IpAddresses', 'ip', '');
   catalog:=  cxGrid1DBTableView1.DataController.GetDisplayText(cxGrid1DBTableView1.DataController.FocusedRecordIndex,0) ;
 
ADOQuery2.Close;
ADOQuery2.SQl.Clear;
ADOQuery2.SQL.Add('use '+ catalog + ' select * from users where username='''+Edit1.text+''';');//логин 
ADOQuery2.Open;
 
  if ADOQuery2.FieldByName('password').AsString= Edit2.text then                                            //пароль 
  begin
  ADOConnection2.Connected:=false;
  connectionString2:='Provider=SQLOLEDB.1;Password=DB_PASSWORD;Persist Security Info=True;User ID=DB_USER;Initial Catalog=DB_DATABASE;Data Source=DB_ADDRESS';
 
 
  IniFile2:= TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
 
  ip:= IniFile2.ReadString('IpAddresses', 'ip', '');
                 user:= Edit1.text;        // логин
                 password:= Edit2.text  ;  // пароль
 
  connectionString2 := StringReplace(connectionString2,'DB_ADDRESS',ip,[rfReplaceAll, rfIgnoreCase]);
  connectionString2 := StringReplace(connectionString2,'DB_USER',user,[rfReplaceAll, rfIgnoreCase]);
  connectionString2 := StringReplace(connectionString2,'DB_PASSWORD',password,[rfReplaceAll, rfIgnoreCase]);
  connectionString2 := StringReplace(connectionString2,'DB_DATABASE',catalog,[rfReplaceAll, rfIgnoreCase]);
 
 
  ADOConnection2.ConnectionString:=connectionString2;
  adoconnection2.LoginPrompt:=false;
  ADOConnection2.Connected:=true;
  ShowMessage('вход');
     edit1.Clear;
     edit2.Clear;
 
 
 
  end
  else  ShowMessage('вход не выполнен');
  edit1.Clear;
  edit2.Clear;
 
 
  end ;
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
10.08.2017, 11:21
Цитата Сообщение от pek Посмотреть сообщение
вот код кнопки
и что?
где ошибка? на какой строке? что там внутри?
отладчиком проходил?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2017, 11:21
Помогаю со студенческими работами здесь

Связь между таблицами из разных баз
Добрый день. Нахожусь на этапе разработки. Изначально была одна база. Сейчас ощутил проблему чрезмерно большого количества сущностей в...

Выборка из нескольких баз
Всем бодрого :). Помогите, пожалуста, составить запрос по имеющейся задачи. имеем несколько сайтов (магазинов), сайты используют разные...

Синхронизация нескольких баз
Для начала опишу то, что хотел сделать и чего добился: 1. Базой пользуются несколько пользователей, т.е. я каждый день высылаю...

Сводная Выборка Из Нескольких Баз.
Подскажите методику для реализации задачи. Есть несколько баз с одинаковым дизайном, нужно в сделать сводный очёт, из всех баз, с...

Select сразу из нескольких баз
Подскажите, пожалуйста, нужно сделать выборку сразу из нескольких отдельных баз данных. Посоветовали через database link создать линку в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru