Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Модификация данных [D7, MySQL]


Страницы:   1 2

*Ray* ©   (2007-01-23 20:00:00) 

Удалено модератором
Примечание: СПАМ


*Ray*   (2007-01-26 20:55:00) [1]

to Рустем:


> Вопрос: Query - это TADOQuery?

нет, использую MyQuery (MyDAC)


> Запрос обращается к одной таблице или к нескольким?

Выборка идет из одной таблицы


> когда, по моему, так будет правильней:

Да, спасибо, так выглядит элегантнее!

Возник вопрос по коду:
В приведенном Вами коде, присутствует Open, однако до этого мне сказали:

Sergey13:
> DataModule1.MyTable1.Open;
Зачем? Ты же уже "установил" указатель на нужную запись в уже, как я понял, открытом датасете. После переоткрытия указатель встает на первую запись.


Как будет правильнее использовать Open или нет?


Рустем   (2007-01-25 20:33:00) [2]


> *Ray* ©


> Есть DBGrid который отображает данные из Query

Вопрос: Query - это TADOQuery? Запрос обращается к одной таблице или к нескольким?
Кроме того, зачем так делать:

> ID_Zayavki:=Form1.DBGrid1.Fields[0].AsInteger;
>DataModule1.MyTable1.Locate('ID_Zayavki', ID_Zayavki, []);

когда, по моему, так будет правильней:

if DataModule1.MyTable1.Locate('ID_Zayavki', Query['ID_Zayavki'], []) then
with DataModule1.MyTable1 do
begin
 Open;
 Edit;
 ...
 Post;
 Close;
 ну и, наверное, Query.Requery;
end;


Sergey13   (2007-01-24 11:19:00) [3]

> И сразу вопрос: а если мы успешно установили, Locate вернул
> true, то может ли в моем первоначальном коде (без транзакций)
> указатель изменить свое место в результате работы другог
> Клиента?

Нет.


*Ray*   (2007-01-24 11:10:00) [4]


> Sergey13 ©   (24.01.07 08:54) [20]
> > DataModule1.MyTable1.Locate('ID_Zayavki',ID_Zayavki,[]);
>
> > //устанавливаю указатель в таблице заявок на нужную заявку
>
> Устанавливаешь. Но установилость ли, не проверяешь. Locate
> - это функция, возвращающая признак успешности выполнения.

Согласен, не  учел что некоторые заявки могут быть не найдены. исправим. И сразу вопрос: а если мы успешно установили, Locate вернул true, то может ли в моем первоначальном коде (без транзакций) указатель изменить свое место в результате работы другог Клиента?

> > DataModule1.MyTable1.Open;
> Зачем? Ты же уже "установил" указатель на нужную запись
> в уже, как я понял, открытом датасете. После переоткрытия
> указатель встает на первую запись.


Спасибо за 2 дельных замечания!


*Ray*   (2007-01-24 11:04:00) [5]


> Видать ИД разные а все остально одинаковое…

Kolan, абсолютно прав.

Я вот и подумал, что это связано с перемещением указателя. И внесенные изменения затирают данные другой заявки.


Sergey13   (2007-01-24 08:54:00) [6]

> [10] *Ray* ©   (23.01.07 21:43)

> DataModule1.MyTable1.Locate('ID_Zayavki',ID_Zayavki,[]);
> //устанавливаю указатель в таблице заявок на нужную заявку

Устанавливаешь. Но установилость ли, не проверяешь. Locate - это функция, возвращающая признак успешности выполнения.

> DataModule1.MyTable1.Open;
Зачем? Ты же уже"установил" указатель на нужную запись в уже, как я понял, открытом датасете. После переоткрытия указатель встает на первую запись.


Kolan   (2007-01-23 22:07:00) [7]

«„некоторые заявки стали дублироваться.“?»

Видать ИД разные а все остально одинаковое…


Johnmen   (2007-01-23 22:06:00) [8]


> *Ray* ©   (23.01.07 22:02) [16]


Тогда как понимать "некоторые заявки стали дублироваться."?


Johnmen   (2007-01-23 22:04:00) [9]

А-а-а...
Мой опыт показывает, что ни в одной из наиболее известных.
Ну а о поддержании этой "основы реляц. БД" должен позаботиться разработчик БД.


*Ray*   (2007-01-23 22:02:00) [10]

2 Johnmen © :

> наличие уникальных индексов

у меня у каждой записи есть уникальный ID, к котрым я и обращаюсь, я не прав?


Kolan   (2007-01-23 21:51:00) [11]

В MSSQL так я пологал. Это же как бы основа реляц. БД…


Johnmen   (2007-01-23 21:50:00) [12]


> Kolan ©   (23.01.07 21:47) [13]
> А что в MySql то что все кортежи должны быть уникальными не выполняется?


А где выполняется?


Kolan   (2007-01-23 21:47:00) [13]

«их не будет, если не будет самой возможности их существования,
т.е. наличие уникальных индексов.»

А что в MySql то что все кортежи должны быть уникальными не выполняется?


Johnmen   (2007-01-23 21:46:00) [14]


> *Ray* ©   (23.01.07 21:43) [10]


Написана ерунда почти в каждой строчке.
Ты всё же почитай что-нибудь, книжку какую про программирование БД.


Johnmen   (2007-01-23 21:44:00) [15]


> *Ray* ©   (23.01.07 21:00) [9]


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


*Ray*   (2007-01-23 21:43:00) [16]

правильно ли будет если я сделаю так:


DataModule1.MyConnection1.StartTransaction;
try
ID_Zayavki:=Form1.DBGrid1.Fields[0].AsInteger; //По нажатию кнопки запоминаю ID заявки.

DataModule1.MyTable1.Locate('ID_Zayavki',ID_Zayavki,[]); //устанавливаю указатель в таблице заявок на нужную заявку

DataModule1.MyTable1.Open;
DataModule1.MyTable1.Edit;
//записываем введенную информацию
DataModule1.MyTable1.Fields.Fields[2].AsInteger:=Form3.DBLookupComboBox1.KeyValu e;
DataModule1.MyTable1.Fields.Fields[3].AsString:=Form3.Edit1.Text;
…………………………………………………………………………..

DataModule1.MyTable1.Post; // сохраняем изменения

Commit;
   
except
 Rollback;
 raise;
end;


*Ray*   (2007-01-23 21:00:00) [17]


> Johnmen ©   (23.01.07 20:54) [7]

А можно хотя бы  попробовать объяснить? или хотя бы ответить в каком направлении мне искать ответ?


> Про транзакции применительно к MySQL ты лучше тут не вещай.

почему именно в MySQL транзакции лучше не использовать?


Kolan   (2007-01-23 20:56:00) [18]

«Про транзакции применительно к MySQL ты лучше тут не вещай.»

Опочки прочел как MsSQL… Незадача


Johnmen   (2007-01-23 20:54:00) [19]


> Kolan ©


Про транзакции применительно к MySQL ты лучше тут не вещай.


> *Ray* ©   (23.01.07 20:10) [2]
> К моему стыду, начал использовать буквально на днях.
>  Мне просто важно знать в этом ли была моя ошибка? и решится
> ли проблема использованием транзакций?


Твоя проблема в [0] никакого отношения к тр-ям не имеет. Но имеет прямое отношение к теории построения и функционирования баз данных. Т.е. ты не знаешь основ. А в этом случае мы говорим на разных языках...


*Ray*   (2007-01-23 20:53:00) [20]

Спасибо большое!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо