Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2009, 12:59   #1
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию Сохранение и открытие в бд

Здравствуйте,
У меня вот такая проблема. Есть бд, в которой хранятся куча таблиц, одна из них Plan. Абсолютно пустая, определены только поля.
В моей программе эта таблица подключена по техн. ADO и выводится в DBGrid. Пользователь вводит в нее данные.Вариантов плана будет много и все их нужно хранить в существующей бд в отдельных таблицах с именами Planxxxxy, xxxx-год, y-вариант плана. Как реализовать это сохранение в существующей бд? И как реализовать открытие одного из вариантов плана в приложении?
Заранее огромное спасибо.
MargoNik вне форума Ответить с цитированием
Старый 21.04.2009, 14:30   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а что мешает хранить все варианты плана по всем годам в одной таблице?
при необходимости показать план по году и соответствубщему варианту делать запрос
Код:
select *
from plan
where plan_var = :p0
  and plan_year = :p1
soleil@mmc вне форума Ответить с цитированием
Старый 22.04.2009, 04:06   #3
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию

Дело в том, что хранить варианты в разных таблицах - это желание моего начальника, поэтому стоит именно такая задача..
MargoNik вне форума Ответить с цитированием
Старый 22.04.2009, 06:50   #4
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от MargoNik Посмотреть сообщение
Здравствуйте,
У меня вот такая проблема. Есть бд, в которой хранятся куча таблиц, одна из них Plan. Абсолютно пустая, определены только поля.
В моей программе эта таблица подключена по техн. ADO и выводится в DBGrid. Пользователь вводит в нее данные.Вариантов плана будет много и все их нужно хранить в существующей бд в отдельных таблицах с именами Planxxxxy, xxxx-год, y-вариант плана. Как реализовать это сохранение в существующей бд? И как реализовать открытие одного из вариантов плана в приложении?
Заранее огромное спасибо.
1. Создайте таблицу со списком имен таблиц планов.
2. SQL командой CREATE TABLE <имя вновь создаваемой таблицы> (<описание поля1>,<описание поля2>,...); создаем новую таблицу плана с нужным именем в существующей БД.
3. Заносим имя вновь созданной таблицы в список планов.
4. При выборе таблицы из списка планов SQL командой SELECT * FROM <имя таблицы из списка планов> открываем нужную таблицу для работы.

Что-то в таком плане.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 22.04.2009, 08:34   #5
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Andrei Посмотреть сообщение
1. Создайте таблицу со списком имен таблиц планов.
2. SQL командой CREATE TABLE <имя вновь создаваемой таблицы> (<описание поля1>,<описание поля2>,...); создаем новую таблицу плана с нужным именем в существующей БД.
3. Заносим имя вновь созданной таблицы в список планов.
4. При выборе таблицы из списка планов SQL командой SELECT * FROM <имя таблицы из списка планов> открываем нужную таблицу для работы.

Что-то в таком плане.
Немного не поняла, т.е. пустого шаблона не нужно?
Не могли бы вы по-подробней описать?
MargoNik вне форума Ответить с цитированием
Старый 22.04.2009, 10:19   #6
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от MargoNik Посмотреть сообщение
Немного не поняла, т.е. пустого шаблона не нужно?
Не могли бы вы по-подробней описать?
Шаблона не нужно.

Пример создания таблицы с помощью CREATE TABLE:

Код:
CREATE TABLE STOCK (
  MODEL SMALLINT NOT NULL UNIQUE,
  MODELNAME CHAR(10) NOT NULL, 
  ITEMID INTEGER NOT NULL, 
  CONSTRAINT MOD_UNIQUE UNIQUE (MODELNAME, ITEMID))
CREATE TABLE - стандартная команда SQL. О ней можно почитать в любом справочнике по SQL.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 22.04.2009, 13:10   #7
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Andrei Посмотреть сообщение
CREATE TABLE - стандартная команда SQL. О ней можно почитать в любом справочнике по SQL.
Я знаю команды SQL всёравно многое мне прояснили, спасибо.
я просто не могу разобраться с самим алгоритмом.
А таблица со списком названий таблиц-это как? я должна завести таблицу в бд, содержащую предполагаемые названия будущих планов? Как эта таблица должна быть связана с самими планами?
MargoNik вне форума Ответить с цитированием
Старый 22.04.2009, 14:03   #8
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от MargoNik Посмотреть сообщение
Я знаю команды SQL всёравно многое мне прояснили, спасибо.
я просто не могу разобраться с самим алгоритмом.
А таблица со списком названий таблиц-это как? я должна завести таблицу в бд, содержащую предполагаемые названия будущих планов? Как эта таблица должна быть связана с самими планами?

Командой CREATE TABLE вы создали новую таблицу с именем в соответствии с шаблоном, предложенным начальником.

В базе таблица уже есть. Теперь ее надо открыть для работы. Вы пишете, например, следующий код для открытия таблицы:

Код:
begin
 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add('SELECT * FROM '+ Trim(Edit1.Text))
 AdoQuery1.Open;
end;
Тогда пользователь сможет открыть любую нужную ему таблицу, введя ее имя в Edit1. Но это хорошо до тех пор пока он помнит какие таблицы он насоздавал. А если он забыл? А еще могут быть очепятки.

Так сделайте же следующий шаг. Создайте список имеющихся в бд имен таблиц чтобы пользователю не приходилось гадать есть у него в бд таблица с таким именем или нет и подставляйте имя таблицы напрямую из списка.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 22.04.2009, 14:45   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

все субд умеют предоставлять список имеющихся таблиц
так что имхо заводить под это дело еще одну таблицу неразумно

а каким образом получить этот список таблиц см. вопрос "список таблиц" на форуме (про субд, под которой реализуется задача, ведь никто не писал)
soleil@mmc вне форума Ответить с цитированием
Старый 22.04.2009, 15:41   #10
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
все субд умеют предоставлять список имеющихся таблиц
так что имхо заводить под это дело еще одну таблицу неразумно

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

PS: А субд в данном случае не имеет значения. База данных может даже состоять из самостоятельных *.dbf или *.db файлов, причем расположенных в совершенно разных местах и даже на разных компьютерах .
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение и открытие Image (размер и положение) с типизированным файлом Лукманов Александр Общие вопросы Delphi 4 31.03.2009 13:55
Сохранение и открытие файлов Kantor Общие вопросы Delphi 1 15.12.2008 05:21
Открытие формы inret Общие вопросы Delphi 3 06.05.2008 14:37
Открытие файла Lexakazanskij Паскаль, Turbo Pascal, PascalABC.NET 9 01.11.2007 22:27
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе rpy3uH Win Api 2 02.12.2006 12:12