![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с добавлением\использованием записи
_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-)