|
|
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015, предлагаещь мне нарисовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 22:28 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
GatorBora2015, предлагаещь мне нарисовать? Вчера на работе, два "архитектора" принесли базу, "что-то в связях не так". Вытрясти из них диаграмму не получилось, "а мы не рисуем, сразу скриптами", пришлось исследовать и рисовать самому. Разобрались, исправили, картинку забрали с собой. И ведь наверняка и ее пролюбят, черти... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 22:45 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015Мне не понятно, как редактировать данные которые хранятся в табл 3, чтобы менялись все шесть записей в поле ,а не только первый. Тебе для начала надо определиться со структурой таблиц в базе. Боюсь, ты не до конца понимаешь, чем запись в наборе данных отличается от поля записи. Отсюда и путаница в объяснениях. К сожалению, ты так и описал точно твоей задачи. Поэтому предположим, что для каждого проекта из Table1 может быть несколько записей в Table2 (классическая master-detail с соотношением 1:n). А раз так, то тебе необязательно заводить еще и Table3. Достаточно в Table2 (помимо автоинкременного 'ishid' и FK на Table1 'isid') сделать 6 полей для исходных данных (например, 'FldSrcData0', 'FldSrcData1'... до 'FldSrcData5') + еще 6 полей (по аналогии, 'FldResultData0', 'FldResultData1'... до 'FldResultData5'), куда ты будешь записывать результаты полученных расчетов. Ну и, чтобы записи одного проекта в Table2 еще как-то отличались друг от друга можно ввести еще какое-нибудь поле, например 'ResearchDate', которое будет показывать, когда проводились замеры для данныго проекта. Отсюда: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Работоспособность кода не проверял, лень поднимать D7 с БДЕ, но общий посыл должен быть понятен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 23:11 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
ДокBora2015Мне не понятно, как редактировать данные которые хранятся в табл 3, чтобы менялись все шесть записей в поле ,а не только первый. Тебе для начала надо определиться со структурой таблиц в базе. Боюсь, ты не до конца понимаешь, чем запись в наборе данных отличается от поля записи. Отсюда и путаница в объяснениях. К сожалению, ты так и описал точно твоей задачи. Поэтому предположим, что для каждого проекта из Table1 может быть несколько записей в Table2 (классическая master-detail с соотношением 1:n). А раз так, то тебе необязательно заводить еще и Table3. Достаточно в Table2 (помимо автоинкременного 'ishid' и FK на Table1 'isid') сделать 6 полей для исходных данных (например, 'FldSrcData0', 'FldSrcData1'... до 'FldSrcData5') + еще 6 полей (по аналогии, 'FldResultData0', 'FldResultData1'... до 'FldResultData5'), куда ты будешь записывать результаты полученных расчетов. Ну и, чтобы записи одного проекта в Table2 еще как-то отличались друг от друга можно ввести еще какое-нибудь поле, например 'ResearchDate', которое будет показывать, когда проводились замеры для данныго проекта. Отсюда: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Работоспособность кода не проверял, лень поднимать D7 с БДЕ, но общий посыл должен быть понятен :) Да, это если одно выражение результирующее( массив), а у меня их в 19. Т.о 19x5=95. Это значит 95 полей будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 08:34 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015Да, это если одно выражение результирующее( массив), а у меня их в 19. Тогда у тебя будет 19 записей за раз, и каждая запись будет соответствовать расчету в определенный момент времени (при условии, что исходные данные тоже будут в этот момент другие). Если исходные данные те же, а расчеты другие, то лепи еще одну master-->detail, но теперь уже на таблицу Table2 --> Table3. Точнее сказать сложно, не зная деталей твоей задачи. Короче, тебе надо основательно изучать теорию реляционных баз данных , чтобы работать дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 09:45 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
ДокBora2015Да, это если одно выражение результирующее( массив), а у меня их в 19. Тогда у тебя будет 19 записей за раз, и каждая запись будет соответствовать расчету в определенный момент времени (при условии, что исходные данные тоже будут в этот момент другие). Если исходные данные те же, а расчеты другие, то лепи еще одну master-->detail, но теперь уже на таблицу Table2 --> Table3. Точнее сказать сложно, не зная деталей твоей задачи. . Изначально я хотел в табл 2 хранить исходн данные , табл 1 связана с табл 2 один к одному (т.е одному проекту соответ 1 набор исходн. данных ) ,а табл 3 результат. Т.о получается один проект -> один набор данных и соответствующий набору результат (тоже один ,но в 19 записях). Тогда как вывести в табл 3 эти 19 записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 10:39 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015Докпропущено... Тогда у тебя будет 19 записей за раз, и каждая запись будет соответствовать расчету в определенный момент времени (при условии, что исходные данные тоже будут в этот момент другие). Если исходные данные те же, а расчеты другие, то лепи еще одну master-->detail, но теперь уже на таблицу Table2 --> Table3. Точнее сказать сложно, не зная деталей твоей задачи. . Изначально я хотел в табл 2 хранить исходн данные , табл 1 связана с табл 2 один к одному (т.е одному проекту соответ 1 набор исходн. данных ) ,а табл 3 результат. Т.о получается один проект -> один набор данных и соответствующий набору результат (тоже один ,но в 19 записях). Тогда как вывести в табл 3 эти 19 записей? Из 19 шестимерных массивов сформировать шесть 19 мерных и их использовать ? Или есть другие решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 13:12 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 15:55 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
ёёёёё, Слово понравилось. ПРОЛЮБЯТ. Класс! А инструмента ахики не знают, раз скрипты ваяют, а диаграммку напечатать лень (диаграмма сама скрипты напечатать может. Хотя бы полуфабрикат. И рисовать на ней удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 16:04 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015, Bora2015Т.о получается один проект -> один набор данных и соответствующий набору результат (тоже один ,но в 19 записях). Тогда как вывести в табл 3 эти 19 записей? Мда, архитектура в таком случае получается очень кривая. Но если реализовывать твою хотелку 1:1, то будет выглядеть примерно так (я покажу на примере FB, типы данных в БДЕ немного другие) код Код: sql 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. Если хочешь добавлять записи пачками по 19 за раз, то таки да, тебе нужен двумерный массив [6,19] Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Таким образом, тут добавляется 19 х 6 = 114 записей. Дальше - сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 16:33 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Доктут добавляется 19 х 6 = 114 записей ой, бл@ © записей таки 19 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 17:06 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
И еще ошибка копипасты (код писан из головы, на коленке). Читай так: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2019, 17:10 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
ДокBora2015, Bora2015Т.о получается один проект -> один набор данных и соответствующий набору результат (тоже один ,но в 19 записях). Тогда как вывести в табл 3 эти 19 записей? Мда, архитектура в таком случае получается очень кривая. Но если реализовывать твою хотелку 1:1, то будет выглядеть примерно так (я покажу на примере FB, типы данных в БДЕ немного другие) код Код: sql 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. Если хочешь добавлять записи пачками по 19 за раз, то таки да, тебе нужен двумерный массив [6,19] Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Я так понимаю это код на добавление записей. А двумерный массив тут обязателен или можно одномерным? Я через одномерный реализовал.При добавлении (первоначальном) добавляет. При редактировании заменяется только первая запись из 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2019, 13:20 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015, извини, но я и так сделал гораздо больше, чем должен был . Или выкладывай неработающий код, или делай сам. У меня свободно времени не так много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2019, 15:10 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
ДокBora2015, извини, но я и так сделал гораздо больше, чем должен был . Или выкладывай неработающий код, или делай сам. У меня свободно времени не так много. Принципиально тут ничего не поменялось. Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2019, 16:39 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015Принципиально тут ничего не поменялось. Код: pascal 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. Я думаю, что тебе сначала просто необходимо почитать книжки. Их сейчас много. Их легко скачать. Их можно читать на чем угодно, где угодно и когда угодно. Было бы желание. Ну и напоследок еще один полезный совет отсюда авторФорум - это ускоренные курсы решения проблемы. Которые уже подразумевают наличие базовых знаний. А "блеяние" насчет "играл-играл, угадал все буквы, но не смог прочитать слово" - это не для форума. Для получения базовых знаний нужно образование. Либо самообразование (т.е. чтение документации), либо обучение (т.е. курсы). Но форуме нет времени для подбора методики общения с каждым вопрашающим. Есть планка. Не выполнил ее - иди "расти". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2019, 00:29 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Док, Сообщение 21940817 записано было не полностью и с опечатками. (торопился) Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2019, 15:29 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Докгде Table3.Locate('rezid',Table1.FieldByName('Projid').AsInteger,[])? Нужно осуществлять проверку по двум условиям? Проверки по Table2.Locate('Isid',Table1.FieldByName('Projid').AsInteger,[]) не достаточно? Доккак приложение должно угадать, какую запись нужно редактировать? Вопрос хороший. По условию Table3.Locate('rezid',Table1.FieldByName('Projid').AsInteger,[]) ? Докна первой итерации ты прекрасно отредактировал запись теперь тебе надо перейти к следующей записи с такой же 'rezid' (их должно быть еще 18) но ты не сможешь, потому что эту часть кода (for..to..do) нужно завернуть в цикл Вот этот момент самый главный. Вот так? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2019, 16:23 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015Вот так? почти :) Вот это Код: pascal 1. 2. поменяй местами И остался еще один вопрос: почему у тебя Код: pascal 1. 2. ? Это ведь разные имена массивов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2019, 18:40 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
ДокИ остался еще один вопрос: почему у тебя Код: pascal 1. 2. ? Это ведь разные имена массивов... Разные. У меня 19 выходных переменных по 6 элементов в каждом. Вот и получается, что вставляется в 6 полей по 19 записей сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2019, 23:13 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
Bora2015Вот и получается Не получается... У кого-то с логикой проблемы. Но я спорить не буду (оставлю додумывать тебе), ибо мне неизвестны детали. На этом все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2019, 01:38 |
|
||
|
Условие на редактирование записей
|
|||
|---|---|---|---|
|
#18+
ДокBora2015Вот и получается Не получается... У кого-то с логикой проблемы. Но я спорить не буду (оставлю додумывать тебе), ибо мне неизвестны детали. На этом все. А что не так? Док Если хочешь добавлять записи пачками по 19 за раз, то таки да, тебе нужен двумерный массив [6,19] var i: integer; CurrDateTime: TDateTime; MyIntArr: array [0..5, 0..18] of Integer; begin if Tbl_Source.Locate('FK_MAIN', Tbl_Main.FieldByName('ID').Value,[]) then for i:= 0 to 18 do begin CurrDateTime:= Now;//текущий момент Tbl_Result.Append;//добавляем Tbl_Result.FieldByName('FK_SOURCE').Value:= Tbl_Source.FieldByName('ID').Value;//ссылка на родителя Tbl_Result.FieldByName('FK_SOURCE').Value:= CurrDateTime; //будем считать, что массив заполнен и готов к употреблению Tbl_Result.FieldByName('FLD_RESULT_0').Value:= MyIntArr[0,i]; Tbl_Result.FieldByName('FLD_RESULT_1').Value:= MyIntArr[1,i]; Tbl_Result.FieldByName('FLD_RESULT_2').Value:= MyIntArr[2,i]; Tbl_Result.FieldByName('FLD_RESULT_3').Value:= MyIntArr[3,i]; Tbl_Result.FieldByName('FLD_RESULT_4').Value:= MyIntArr[4,i]; Tbl_Result.FieldByName('FLD_RESULT_5').Value:= MyIntArr[5,i]; Tbl_Result.Post;//сохраняем end; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2019, 09:14 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2039187]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 481ms |

| 0 / 0 |
