Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Здравствуйте. Как программно создать таблицу paradox при добавлении новой записи в другую таблицу? Т.е добавил в таблицу 1 запись ,создалась новая таблица (с фиксиров. колич. полей) с именем того , что ввели в первую запись , вторую создалась вторая и т.д.
2 июл 19, 14:25    [21919048]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11196
Bora2015,

Чем не устроила классическая схема Master-Detail?
2 июл 19, 14:56    [21919084]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
black-manatee
Member

Откуда:
Сообщений: 50
Умоляю, не говорите, что Вы используете BDE.
2 июл 19, 15:06    [21919090]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
_Vasilisk_
Bora2015,

Чем не устроила классическая схема Master-Detail?

Не знаю как ее применить в моем случае.
2 июл 19, 15:26    [21919106]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
black-manatee
Умоляю, не говорите, что Вы используете BDE.

Да, но можно и ado. Я хотел понять как это сделать в принципе.
2 июл 19, 15:35    [21919117]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11196
Bora2015
Не знаю как ее применить в моем случае.

Master: (ID, Name)
Detail: (ID, MasterID, фиксированное количество полей)
2 июл 19, 15:37    [21919122]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
_Vasilisk_,
Хранить в таблице надо массиве, поэтому не понятно как сделать. Т.е в подчинённой таблице 6 записей соответствуют одной записи в главной таблице, 6 следующих записей в подчин. таблице, второй записи в главной и.т.д
2 июл 19, 15:54    [21919149]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11196
Bora2015
Т.е в подчинённой таблице 6 записей соответствуют одной записи в главной таблице
И в чем проблема?
_Vasilisk_
Master: (ID, Name)
Detail: (ID, MasterID, фиксированное количество полей)

Master:
(1, Первая запись),
(2, Вторая запись)

Detail:
(1, 1, Первая запись первой записи),
(2, 1, Вторая запись первой записи),
..............
(6, 1, Шестая запись первой записи),
(7, 2, Первая запись второй записи),
(8, 2, Вторая запись второй записи),
..............
(12, 2, Шестая запись второй записи),
2 июл 19, 16:19    [21919181]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
goldmi45
Member

Откуда:
Сообщений: 1186
Bora2015,

Почитайте про нормализацию баз данных.
2 июл 19, 16:30    [21919194]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
_Vasilisk_
Bora2015
Т.е в подчинённой таблице 6 записей соответствуют одной записи в главной таблице
И в чем проблема?
_Vasilisk_
Master: (ID, Name)
Detail: (ID, MasterID, фиксированное количество полей)

Master:
(1, Первая запись),
(2, Вторая запись)

Detail:
(1, 1, Первая запись первой записи),
(2, 1, Вторая запись первой записи),
..............
(6, 1, Шестая запись первой записи),
(7, 2, Первая запись второй записи),
(8, 2, Вторая запись второй записи),
..............
(12, 2, Шестая запись второй записи),

Не понятно, как это в коде реализовать?
2 июл 19, 16:48    [21919218]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Привет.

Bora2015
Не понятно, как это в коде реализовать?

property DataSet.DataSource
2 июл 19, 17:40    [21919304]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Polesov
Привет.

Bora2015
Не понятно, как это в коде реализовать?

property DataSet.DataSource

Это подключение к набору данных через источник. А как осуществить саму запис9+ь шестью строками и чтобы все они соответствовали одной записи в главной таблице?
2 июл 19, 19:57    [21919422]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
А как осуществить саму запис9+ь шестью строками и чтобы все они соответствовали одной записи в главной таблице?

Точно так же, как и в "отдельную таблицу Paradox"
2 июл 19, 20:40    [21919435]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
Polesov
property DataSet.DataSource

Это подключение к набору данных через источник.

Подключение к набору данных через источник - Grid.DataSource.DataSet
DataSet.DataSource - подключение MasterSource
2 июл 19, 20:54    [21919447]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Polesov
Bora2015
А как осуществить саму запис9+ь шестью строками и чтобы все они соответствовали одной записи в главной таблице?

Точно так же, как и в "отдельную таблицу Paradox"

А как в отдельную таблицу можно подробнее?
2 июл 19, 23:30    [21919513]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Заменить Paradox на нормальную СУБД с триггерами или хранимыми процедурами не судьба?
2 июл 19, 23:39    [21919515]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9760
Gator
Заменить Paradox на нормальную СУБД с триггерами или хранимыми процедурами не судьба?

Был бы учебник и время ...
3 июл 19, 00:03    [21919521]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Dmitry Arefiev,

Врамени достаточно, а учебники про парадох и фокспро сожжены давно...
3 июл 19, 00:10    [21919524]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
И всё-таки как создать таблицу по записи в другой? Кто-нибудь знает?
3 июл 19, 13:54    [21919838]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Vlad F
Member

Откуда:
Сообщений: 926
Bora2015,
Я знаю, если угодно. Таблицу Paradox посредством BDE можно было создать выполнив соотв. запрос на т.н. Local SQL в компоненте TQuery или соотв. методом компонента TTable, добавка в него перед этим необходимый набор полей.
3 июл 19, 14:12    [21919869]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Vlad F
Member

Откуда:
Сообщений: 926
P.S. Ну и соотв. опорный BDE- алиас перед этим должен быть правильно настроен именно на Paradox.
3 июл 19, 14:22    [21919884]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
А как в отдельную таблицу можно подробнее?

Из клиентской программы пишешь запись в мастер-таблицу, и тут же пишешь шесть записей в детайл-таблицу, не забыв указать полученное значение поля мастер-ID.
3 июл 19, 18:49    [21920198]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Polesov
Bora2015
А как в отдельную таблицу можно подробнее?

Из клиентской программы пишешь запись в мастер-таблицу, и тут же пишешь шесть записей в детайл-таблицу, не забыв указать полученное значение поля мастер-ID.

Вот это мне и не понятно.
3 июл 19, 23:09    [21920341]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
Вот это мне и не понятно.


// Вставка мастер-записи
  MasterDataSet.Insert;
  MasterDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
  MasterDataSet.Post;

// Вставка шести детайл-записей
  DetailDataSet.Insert;
// Запись 1
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId1;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 2
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId2;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 3
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId3;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 4
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId4;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 5
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId5;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 6
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId6;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
  DetailDataSet.Post;


P.S. Курсовая?
4 июл 19, 09:43    [21920498]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
автор
P.S. Курсовая?


Не, самообучение. А поля DETAIL_ID, NewDetailId1, MASTER_ID и NewMasterId это что за поля?
5 июл 19, 01:02    [21921250]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
самообучение

https://docplayer.ru/26222180-Programmirovanie-baz-dannyh-v-delphi.html
5 июл 19, 06:27    [21921264]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Polesov,
Ввод данных в первую таблицу у меня происходил через combobox.


Table1.Insert;
 Table1.FieldByName('Projname').AsString:=ComboBox1.Text;
Form1.Caption:=Table1.FieldByName('Projname').AsString;
  Table1.Post;


А во вторую таблицу

Table3.Insert;
  for i:=0 to 5 do
  begin

       Table3.FieldByName('Cy1').AsString:=floattostr(Cyst[i]);
        Table3.FieldByName('Ka1').AsString:=floattostr(kA1[i]);
        Table3.FieldByName('Kb1').AsString:=floattostr(kB1[i]);
        Table3.FieldByName('Cp1').AsString:=floattostr(cp1[i]);
        Table3.FieldByName('Cp2').AsString:=floattostr(cp2[i]);
        Table3.FieldByName('Cm1').AsString:=floattostr(cm1[i]);
        Table3.FieldByName('Cm2').AsString:=floattostr(cm2[i]);
        Table3.FieldByName('Y1').AsString:=floattostr(Y1[i]);
        Table3.FieldByName('M1').AsString:=floattostr(M1[i]);
        Table3.FieldByName('Y2').AsString:=floattostr(Y2[i]);
        Table3.FieldByName('M2').AsString:=floattostr(M2[i]);    
        end;
   
 Table3.Post;


автор
// Вставка мастер-записи
MasterDataSet.Insert;
MasterDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
MasterDataSet.Post;

// Вставка шести детайл-записей
DetailDataSet.Insert;
// Запись 1
DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId1;
DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 2
DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId2;
DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 3
DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId3;
DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 4
DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId4;
DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 5
DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId5;
DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 6
DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId6;
DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
DetailDataSet.Post;


У первой таблицы первич. ключ Projid, а у второй Rid.

MASTER_ID понятно у меня Projid, а NewMasterId это что ?
8 июл 19, 01:36    [21922390]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
goldmi45
Member

Откуда:
Сообщений: 1186
Bora2015
Polesov,
У первой таблицы первич. ключ Projid, а у второй Rid.

MASTER_ID понятно у меня Projid, а NewMasterId это что ?

MASTER_ID - название поля в таблице.
NewMasterId - значение записи первичного ключа в таблице мастера (ссылка).
8 июл 19, 08:17    [21922418]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
  Table3.Insert;
  for i:=0 to 5 do
  begin

      Table3.FieldByName('Cy1').AsString:=floattostr(Cyst[i]);
      Table3.FieldByName('Ka1').AsString:=floattostr(kA1[i]);
      Table3.FieldByName('Kb1').AsString:=floattostr(kB1[i]);
      Table3.FieldByName('Cp1').AsString:=floattostr(cp1[i]);
      Table3.FieldByName('Cp2').AsString:=floattostr(cp2[i]);
      Table3.FieldByName('Cm1').AsString:=floattostr(cm1[i]);
      Table3.FieldByName('Cm2').AsString:=floattostr(cm2[i]);
      Table3.FieldByName('Y1').AsString:=floattostr(Y1[i]);
      Table3.FieldByName('M1').AsString:=floattostr(M1[i]);
      Table3.FieldByName('Y2').AsString:=floattostr(Y2[i]);
      Table3.FieldByName('M2').AsString:=floattostr(M2[i]);    
  end;
  Table3.Post;

Я дико извиняюсь - Table3.Insert; требуется для каждой итерации цикла, иначе вставиться только одна запись, в которой будут последние значения.

Bora2015
MASTER_ID понятно у меня Projid, а NewMasterId это что ?

NewMasterId - значение первичного ключа мастер-таблицы, по которому, собственно, осуществляется связь мастер-детайл.
8 июл 19, 09:52    [21922477]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
А связь надо установить не введением дополнит. поля (помимо id первич. ключа) в главной таблице с которым и связать c id (первич. ключ) подчиненной ?
9 июл 19, 00:30    [21923142]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Дико извиняюсь, речь то шла об 1 таблице
Bora2015
Здравствуйте. Как программно создать таблицу paradox при добавлении новой записи в другую таблицу? Т.е добавил в таблицу 1 запись ,создалась новая таблица (с фиксиров. колич. полей) с именем того , что ввели в первую запись , вторую создалась вторая и т.д.

Автор странного хочет и не объясняет, зачем ему на каждый чих новую таблицу создавать...

Пусть уже отвяжется от парадокса и почитает, наконец, умные книжки.
9 июл 19, 01:21    [21923148]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Polesov,
Я связал таблицы по Rid (ключевое поле автоинкрементного типа подчинённой таблицы) с полем Prezult главной. И при добавлении данных в таблицу получается ошибка ...class Edatabaserror with message field Rid cannot be modified. Связывал через инспектор объектов. Почему возникает ошибка?
11 июл 19, 16:57    [21925096]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
Я связал таблицы по Rid (ключевое поле автоинкрементного типа подчинённой таблицы) с полем Prezult главной. И при добавлении данных в таблицу получается ошибка ...class Edatabaserror with message field Rid cannot be modified. Связывал через инспектор объектов. Почему возникает ошибка?
Значения автоинкрементных полей менять нельзя.

Master имеет свой первичный ключ, detail - свой первичный ключ и ссылочное значение Master_Id (по сути первичный ключ Master).
Принадлежность записей Detail к Master определяется значением поля Master_Id в Detail-таблице.

К сообщению приложен файл. Размер - 1Kb
12 июл 19, 14:14    [21925734]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Polesov
Bora2015
Вот это мне и не понятно.


// Вставка мастер-записи
  MasterDataSet.Insert;
  MasterDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
  MasterDataSet.Post;

// Вставка шести детайл-записей
  DetailDataSet.Insert;
// Запись 1
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId1;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 2
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId2;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 3
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId3;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 4
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId4;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 5
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId5;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
// Запись 6
  DetailDataSet.FildByName( 'DETAIL_ID' ).AsInteger := NewDetailId6;
  DetailDataSet.FildByName( 'MASTER_ID' ).AsInteger := NewMasterId;
  DetailDataSet.Post;


У меня вставка мастер записи происходит так:
автор
Table1.Insert;
Table1.FieldByname('Projname').AsString:=Combobox1.Text;
Table1.Post;


Как записать с учётом сообщения выше о вставке мастер -записи?
12 июл 19, 14:45    [21925770]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Polesov
Member

Откуда:
Сообщений: 606
Bora2015
У меня вставка мастер записи происходит так:
Table1.Insert;
Table1.FieldByname('Projname').AsString:=Combobox1.Text;
Table1.Post;
Как записать с учётом сообщения выше о вставке мастер -записи?

  MasterId := Table1.FieldByName( 'ID' ).AsInteger;
  for i := 1 to 6 do
  begin
    Table2.Insert;
    Table2.FieldByName( 'MASTER_ID' ).AsInteger := MasterId; 
  end;
  Table2.Post;
12 июл 19, 16:12    [21925880]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
LocksmithPC
Member

Откуда:
Сообщений: 200
Я тебе здесь 21925629 все расписал с картинками
13 июл 19, 12:03    [21926126]     Ответить | Цитировать Сообщить модератору
 Re: Создание таблицы  [new]
Bora2015
Member

Откуда:
Сообщений: 58
Polesov
Bora2015
У меня вставка мастер записи происходит так:
Table1.Insert;
Table1.FieldByname('Projname').AsString:=Combobox1.Text;
Table1.Post;
Как записать с учётом сообщения выше о вставке мастер -записи?

  MasterId := Table1.FieldByName( 'ID' ).AsInteger;
  for i := 1 to 6 do
  begin
    Table2.Insert;
    Table2.FieldByName( 'MASTER_ID' ).AsInteger := MasterId; 
  end;
  Table2.Post;
У меня один обработчик добавляет запись в таблицу проектов ,а другой в таблицу исходн. данных и таблицу результатов. А этот код в какой обработчик?
16 июл 19, 11:05    [21927333]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить