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

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

проблема с добавлением\использованием записи


Страницы:   1 2

_e_u_ ©   (2005-05-14 12:51:00) 

По нажатию кнопки, добавляется запись в АДОтаблицу1, затем мне нужно использовать эту запись в АДОтаблице2, в этой же процедуре. Это не получается, использование добавленной записи получается только после перезапуска приложения.
Помогите, не могу найти решение...


_e_u_   (2005-05-15 17:24:00) [1]

Удалено модератором


_e_u_   (2005-05-15 10:41:00) [2]

procedure TForm5.Button1Click(Sender: TObject);
begin
Form2.ADOConnection1.BeginTrans;
try
 if (form2.Edit5.Text<>form2.ADOQuery4vid.Text)and(form2.Edit5.text<>'')then
  begin
  form2.ADOTable3.Append;
  form2.ADOTable3Vid.Text:=form2.Edit5.Text;
  form2.ADOTable3.Post;
  end;
  Form2.ADOTable5.Append;
  form2.ADOTable3.First;
while not (form2.ADOTable3.Eof) do
 begin
  if Form2.Edit5.text=form2.ADOTable3Vid.text then
   begin
   form2.ADOTable5Id_vid.Text:=form2.ADOTable3Id_vid.text;
   form2.ADOTable3.Last;
   end
  else form2.ADOTable3.Next;
 end;
form2.ADOTable5.Post;
Form2.ADOConnection1.CommitTrans;
except
Form2.ADOConnection1.RollbackTrans;


на предыдущей форме:
procedure TForm2.Edit5Change(Sender: TObject);
begin
if Edit5.Focused=true then
begin
 ADOQuery4.Close;
 ADOQuery4.SQL.Clear;
 ADOQuery4.SQL.Add('SELECT vid');
 ADOQuery4.SQL.Add('FROM vid');
 ADOQuery4.SQL.Add('WHERE vid LIKE :vi');
 ADOQuery4.Parameters.ParamByName('vi').Value:='%'+Edit5.Text+'%';
 ADOQuery4.Open;
end;
end;
procedure TForm2.DBGrid4CellClick(Column: TColumn);
begin
Form2.Edit5.Text:=ADOQuery4vid.Text;
end;


сейчас яснее вроде стало?


_e_u_   (2005-05-15 10:27:00) [3]

вобще, использование моего приложения возможно и планируется моим универом...но я уже буду с дипломом, когда начнут проявляться ляпы:)
ANB чтоб было яснее надо кучу текста выложить, щас попробую скомпоновать и объяснить по лучше...


ANB   (2005-05-14 17:52:00) [4]


> Дык никто ее юзать и не будет - диплом.
- а если юзать не будет никто - убери транзакции. Они здесь реально то не очень нужны.
Код у тебя какой то странный. Где поиск такого же издательства ? Переименуй объекты и переменные на понятные идентификаторы и выложи исходники еще раз.


_e_u_   (2005-05-14 15:40:00) [5]


> Lexer ©   (14.05.05 15:01) [21]
> посмотри, может эт из-за позднего закрытия транзакции, попробуй
> сдлать коммит после первой вставки и опять открыть транз.
> перед вставкой во вторую

не катит:) придется как то обходить...


Sergey13   (2005-05-14 15:10:00) [6]

2[22] ANB ©   (14.05.05 15:05)
Дык никто ее юзать и не будет - диплом. База останется почти девственно чистой. 8-)


ANB   (2005-05-14 15:05:00) [7]

Имхо, не есть это кошерно, добавлять в справочник все, что юзеру захочется написать в таблице. Мусора будет много.


Lexer   (2005-05-14 15:01:00) [8]

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


_e_u_   (2005-05-14 14:57:00) [9]

ну я щас попробую ознакомиться, но у меня времени мало, в дебри лезть некогда, просто я думал найти помощь по конкретно моему варианту...
спасибо за помощь...


Johnmen   (2005-05-14 14:40:00) [10]

>затем номер этого нового значения заносится в таблицу с книгами,

Зачем ?????????????
У тебя же стандартная связка Master-Detail. А насчет работы с МД мегатонны инфы.......


_e_u_   (2005-05-14 14:20:00) [11]

блин...запарился писать ответ...виснет все постоянно...

> В целом, ЗАЧЕМ всё это надо ?

диплом пишу:)
вобще тут я пытаюсь реализовать: добавление книги. В этом куске только добавление издательства, издательства у меня в отдельной таблице находятся, у каждого издательства свой личный номер, по этому номеру издательство связывается с таблицей(АДОтейбл5) в которой содержатся книги.
у меня проверяется - если в таблице с издательствами нет введенного значения, то оно заносится в эту таблицу, затем номер этого нового значения заносится в таблицу с книгами, если такое издательство уже есть, то просто его номер заносится в таблицу с книгами.


Johnmen   (2005-05-14 13:56:00) [12]

поправка к п.4
form2.ADOTable5Id_izd.Textвполне может принять значение NULL.

В целом, ЗАЧЕМ всё это надо ?


Johnmen   (2005-05-14 13:53:00) [13]

4. Почему вообще сразу не изменить form2.ADOTable5Id_izd.Text, ведь условие ВСЕГДА выполнится ?


Johnmen   (2005-05-14 13:50:00) [14]

3. М.б. лучше Locate вместо цикла ?


Johnmen   (2005-05-14 13:49:00) [15]

2. Какой смысл в
  if (form2.Edit3.Text<>form2.ADOQuery2izdat.Text)and(form2.Edit3.text<>'')then


Johnmen   (2005-05-14 13:47:00) [16]

>_e_u_ ©   (14.05.05 13:42) [11]

А где здесь АДОтаблица1 ?


_e_u_   (2005-05-14 13:43:00) [17]

evvcom, подцеплено через один все.


_e_u_   (2005-05-14 13:42:00) [18]

procedure TForm5.Button1Click(Sender: TObject);
begin
Form2.ADOConnection1.BeginTrans;
try
 if (form2.Edit3.Text<>form2.ADOQuery2izdat.Text)and(form2.Edit3.text<>'')then
  begin
  form2.ADOTable2.Append;
  form2.ADOTable2Izdat.Text:=form2.Edit3.Text;
  form2.ADOTable2.Post;
  end;
 form2.ADOTable2.First;
 Form2.ADOTable5.Append;
while not (form2.ADOTable2.Eof) do
 begin
  if Form2.Edit3.text=form2.ADOTable2Izdat.text then
   begin
   form2.ADOTable5Id_izd.Text:=form2.ADOTable2Id_izd.Text;
   form2.ADOTable2.Last;
   end
  else form2.ADOTable2.Next;
 end;
form2.ADOTable5.Post;
Form2.ADOConnection1.CommitTrans;
except
Form2.ADOConnection1.RollbackTrans;
end;

вот кусок.


evvcom   (2005-05-14 13:39:00) [19]

Цепляй обе таблицы через один Connection


Sergey13   (2005-05-14 13:16:00) [20]

2[7] Lex_! ©   (14.05.05 13:11)
> Requery разве не аналогичный результат даст?...
А я знаю? Я с АДО не работал ни разу, как и с МССКЛ. 8-)


Страницы:   1 2

Наверх

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