Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
Внизоткат изменений в БД Найти похожие ветки
← →
ВладОшин © (2014-03-31 13:34) [40]по сабжу - добавить поле deleted
вставляем с признаком Удален, если корректно - убираем признак.
← →
Dennis I. Komarov © (2014-03-31 14:44) [41]
> ВладОшин © (31.03.14 13:34) [40]
> по сабжу - добавить поле deleted
> вставляем с признаком Удален, если корректно - убираем признак.
>
Жуть, чего говоришь. Он же весь хлам и плохой и хороший в БД тянет...
← →
ВладОшин © (2014-03-31 15:08) [42]согласен.
Но если надо сейчас?
т.к. пересмотреть архитектуру/логику - дело не одного дня(недели/месяца).
А так делают.
Правда будешь потом везде в where and is_deleted = "N" дописывать..
Например, в "желтой прорамме" заводишь документ, пиши что хочешь туда.
Пока он не "проведен" - он не считается.
← →
clickmaker © (2014-03-31 15:21) [43]> Пока он не "проведен" - он не считается
это скорей что-то типа where IsApproved=1 - утвержден. В говноcms sharepoint тоже такая система используется при работе с документами.
← →
Dennis I. Komarov © (2014-03-31 16:39) [44]
> равда будешь потом везде в where and is_deleted = "N" дописывать.
> .
>
> Например, в "желтой прорамме" заводишь документ, пиши что
> хочешь туда.
> Пока он не "проведен" - он не считается.
Не будет. Он про SQL тоже ничего не знает. Почитай ветку...
← →
Александр_2012 (2014-04-04 15:43) [45]Уважаемые мастера. Появилась такая идея: создаю виртуальную таблицу, туда копирую текущую информацию из DBEdit-ов, проверяю на корректность, после этого сохраняю в основной таблице.
Я представил себе что-то типа:
with DataQ do
for i:=0 to FieldCount-1 do
if Fields[i].DataType=ftInteger then
VTable.AddField(Fields[i].FieldName,
Fields[i].DataType,
Fields[i].DataSize);
VTable.Append;
for i:=0 to VTable.FieldCount-1 do
for j:=0 to MainFormKart.ComponentCount-1 do
begin
Temp:=MainFormKart.Components[j];
if (Temp is TDBEdit) and (VTable.Fields[i].FieldName=(Temp as TDBEdit).Field.FieldName) then
VTable.Fields[i].Value:=(Temp as TDBEdit).Text;
end;
VTable.Post;
затем получаю условие проверки и подставляю его:
VTable.Filter:=USL.FieldByName("usl").AsString;
VTable.Filtered:=True;
if VTable.RecordCount>0 then //значит есть ошибка.
Кажется должно работать, но затыкается на
if Fields[i].DataType=ftInteger then
VTable.AddField(Fields[i].FieldName,
Fields[i].DataType,
Fields[i].DataSize);
пишет, что неверный размер поля (для информации все поля типа integer имеют тип number, number(5), number(10), number(15) и number(16))
В чём проблема? Я наврал в коде? А показалось, что замысел неплох. Не замусоривается основная таблица, в виртуальной всего одна запись, поэтому все проверки должны проходить быстрее, после проверок память освобождается. Возможно, это всё глупо, уж сильно не ругайте.
← →
Inovet © (2014-04-04 16:12) [46]> [45] Александр_2012 (04.04.14 15:43)
Раз так надо проверять по хранимым условиям, почему не хочешь сделать это в хранимой(ых) процедуре(ах)? Почитай о них.
← →
Александр_2012 (2014-04-04 18:37) [47]Проблема не только в том, что знаний не хватает (можно почитать, поспрашивать в интернете), но и в том, что фирма, создавшая БД, ограничила права пользователей, что, наверное, правильно, но затрудняет создание программ для работы с БД. Думаю, что создать ХП прав-то и не хватит. А по договору они только занимаются администрированием БД, никаких изменений, дополнений в договоре не прописано. Поэтому и пытаюсь решить проблемы как могу.
← →
Styx (2014-04-04 19:05) [48]
> ограничила права пользователей
Так Вы - пользователь или разработчик? Рассказывайте тогда подробнее всю историю.
← →
turbouser © (2014-04-04 22:49) [49]
> Александр_2012 (04.04.14 18:37) [47]
> Думаю, что создать ХП прав-то и не хватит. А по договору
> они только занимаются администрированием БД, никаких изменений,
> дополнений в договоре не прописано. Поэтому и пытаюсь решить
> проблемы как могу.
8-()
← →
turbouser © (2014-04-05 14:12) [50]
> Александр_2012 (04.04.14 18:37) [47]
Мне вот интересно, много таких самоделкиных встречается, а вот зачем надо лезть в эту самую БД? Ведь если есть необходимость, то можно напрячь разработчиков. Если жадные или просто дорого для компании - то почему бы не попросить предоставить полный доступ с отказом от заключенных соглашений? А может у них есть что-то типа SDK? И ведь если все перечисленное невозможно, а сопровождение продолжается, то же это не просто так. И ведь если влезть в эту бд без необходимых технических (я уже не говорю про прикладные) навыков ,то можно все поломать..
← →
sniknik © (2014-04-05 17:30) [51]> Поэтому и пытаюсь решить проблемы как могу.
покажите им эту ветку... они испугаются и сами вам нужную XP сделают :), а иначе у них с администрированием/работой основной, их программы возникнут большие проблемы.
← →
Александр_2012 (2014-04-06 00:06) [52]>Styx
Подробнее. Рассказываю. БД создавала сторонняя организация, которая до сих пор поддерживает её целостность. Но программы по корректировке основной таблицы, по получению статистики пишем сами. А другие сотрудники (инженеры и операторы) пользуются написанными, в том числе и мною, программами. Так что, я и пользователь и разработчик. И программа, которую я пытаюсь улучшить, написана более года назад и прекрасно работает, за исключением оперативной (до сохранения данных на диск) проверки правильности заполнения таблицы в соответствии с внешними условиями. В программу также встроен модуль, позволяющий просканировать таблицу за определённый период времени на соответствии внешним условиям. Чем сейчас и пользуемся. Но хотелось бы предупреждать запись недостоверных данных, а не отлавливать и исправлять потом.
>turbouser ©
А ведь в БД я как раз и не лезу (не считая записи в одну из таблиц, что разрешено). И, как я написал выше, рассматриваю вариант использования виртуальной таблицы, если удастся разобраться.
>sniknik ©
Не испугаются, т.к. прав что-либо сильно накосячить у меня не хватит, ну разве что стереть все данные из таблицы, но для этого существует резервный сервер и данные восстановят, естественно, надавав мне по шее.
Вообще-то, хотелось получить ответ на вопрос в чём моя ошибка при попытке использования виртуальной таблицы, хотя и про жизнь тоже готов поговорить.
← →
Inovet © (2014-04-06 01:11) [53]> [52] Александр_2012 (06.04.14 00:06)
> хотелось получить ответ на вопрос в чём моя ошибка при попытке
> использования виртуальной таблицы
В самом факте её использования. Нет прав ни на что, ладно, вычисляй выражения валидации введённых данных на сервере без ХП в запросах. Что там в Оракле есть для этого? Ну, допустим, что-то такое хранится в таблице с выражениями валидации
ВалидационнаяФункция1(:ЭтоМожноСделатьПараметром, :ЕщёОдинПараметр) +
ВалидационнаяФункция2(:ДляНеёПараметр) > 10 AND
:ТутЕщёОтдельныйПараметрВоткнём NOT IN (SELECT FROM НужнаяТаблица)
Ну в таком духе что-то. Теперь это выражение подставь в запрос
SELECT ТоВыражение, ЕщёОдноИзТакихЖе, ИЕщёСколькоНадо FROM НекаяСистемнаяТалицаОраклСпециальноДляТакихДел
Потом только задавай значения параметров, выполняй и смотри результат.
Наверняка есть в Оракле и другие подобные способы.
← →
Плохиш © (2014-04-06 01:58) [54]
> для информации все поля типа integer имеют тип number, number(5),
> number(10), number(15) и number(16)
Number - это не Integer.
← →
[ВладОшин] © (2014-04-06 20:25) [55]
> Александр_2012 (04.04.14 15:43) [45]
>
> Уважаемые мастера. Появилась такая идея: создаю виртуальную
> таблицу, туда копирую текущую информацию из DBEdit-ов, проверяю
> на корректность, после этого сохраняю в основной таблице.
>
т.е. можешь написать функцию типа
if Func(dbedit1, dbedit2, .. dbeditN) then
набор данных корректен else
набор данных НЕ корректен
?
← →
Кщд (2014-04-08 08:39) [56]>Александр_2012 (06.04.14 00:06) [52]
1. сделали insert в таблицу;
2. можете работать с этими данными с помощью SQL-запросов;
3. если проверка не прошла, делаете rollback, иначе - commit.
в чём проблема?
← →
Dennis I. Komarov © (2014-04-08 10:53) [57]
> Кщд (08.04.14 08:39) [56]
> >Александр_2012 (06.04.14 00:06) [52]
> в чём проблема?
> Александр_2012 (04.04.14 18:37) [47]
> Проблема не только в том, что знаний не хватает (можно почитать,
> поспрашивать в интернете), но и в том, что фирма, создавшая
> БД, ограничила права пользователей, что, наверное, правильно,
> но затрудняет создание программ для работы с БД. Думаю,
> что создать ХП прав-то и не хватит.
т.е. на "POST" права есть, а на "INSERT"/"SELECT" нет :) Но проблема действительно не только в том что знаний не хватает, но и в нежелании их получать - проще нечто монстрообразное родить
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.091 c