Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Внизпроблема с добавлением использованием записи Найти похожие ветки
← →
_e_u_ © (2005-05-14 12:51) [0]По нажатию кнопки, добавляется запись в АДОтаблицу1, затем мне нужно использовать эту запись в АДОтаблице2, в этой же процедуре. Это не получается, использование добавленной записи получается только после перезапуска приложения.
Помогите, не могу найти решение...
← →
_e_u_ © (2005-05-14 12:52) [1]забыл указать, таблицы на МССКУЭЛЬСервере
← →
Lex_! © (2005-05-14 12:54) [2]после добавления
AdoTable2.requery()
← →
_e_u_ © (2005-05-14 12:59) [3]Lex_!, спасиб, сейчас пробану...
← →
_e_u_ © (2005-05-14 13:06) [4]не вышло...хееелп..
← →
Sergey13 © (2005-05-14 13:10) [5]Переоткрой 2 таблицу.
← →
Lex_! © (2005-05-14 13:11) [6]код?
← →
Lex_! © (2005-05-14 13:11) [7]
> Sergey13 © (14.05.05 13:10) [5]
> Переоткрой 2 таблицу.
Requery разве не аналогичный результат даст?...
← →
Lexer © (2005-05-14 13:13) [8]
> _e_u_ © (14.05.05 12:51)
> По нажатию кнопки, добавляется запись в АДОтаблицу1, затем
> мне нужно использовать эту запись в АДОтаблице2, в этой
> же процедуре.
как добавляешь? делаешь ли пост? завершаешь транзакцию? как вызываешь процедуру?
← →
Sergey13 © (2005-05-14 13:16) [9]2[7] Lex_! © (14.05.05 13:11)
> Requery разве не аналогичный результат даст?...
А я знаю? Я с АДО не работал ни разу, как и с МССКЛ. 8-)
← →
evvcom © (2005-05-14 13:39) [10]Цепляй обе таблицы через один Connection
← →
_e_u_ © (2005-05-14 13:42) [11]
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;
вот кусок.
← →
_e_u_ © (2005-05-14 13:43) [12]evvcom, подцеплено через один все.
← →
Johnmen © (2005-05-14 13:47) [13]>_e_u_ © (14.05.05 13:42) [11]
А где здесь АДОтаблица1 ?
← →
Johnmen © (2005-05-14 13:49) [14]2. Какой смысл в
if (form2.Edit3.Text<>form2.ADOQuery2izdat.Text)and(form2.Edit3.text<>"")then
← →
Johnmen © (2005-05-14 13:50) [15]3. М.б. лучше Locate вместо цикла ?
← →
Johnmen © (2005-05-14 13:53) [16]4. Почему вообще сразу не изменить
form2.ADOTable5Id_izd.Text
, ведь условие ВСЕГДА выполнится ?
← →
Johnmen © (2005-05-14 13:56) [17]поправка к п.4
form2.ADOTable5Id_izd.Text
вполне может принять значение NULL.
В целом, ЗАЧЕМ всё это надо ?
← →
_e_u_ © (2005-05-14 14:20) [18]блин...запарился писать ответ...виснет все постоянно...
> В целом, ЗАЧЕМ всё это надо ?
диплом пишу:)
вобще тут я пытаюсь реализовать: добавление книги. В этом куске только добавление издательства, издательства у меня в отдельной таблице находятся, у каждого издательства свой личный номер, по этому номеру издательство связывается с таблицей(АДОтейбл5) в которой содержатся книги.
у меня проверяется - если в таблице с издательствами нет введенного значения, то оно заносится в эту таблицу, затем номер этого нового значения заносится в таблицу с книгами, если такое издательство уже есть, то просто его номер заносится в таблицу с книгами.
← →
Johnmen © (2005-05-14 14:40) [19]>затем номер этого нового значения заносится в таблицу с книгами,
Зачем ?????????????
У тебя же стандартная связка Master-Detail. А насчет работы с МД мегатонны инфы.......
← →
_e_u_ © (2005-05-14 14:57) [20]ну я щас попробую ознакомиться, но у меня времени мало, в дебри лезть некогда, просто я думал найти помощь по конкретно моему варианту...
спасибо за помощь...
← →
Lexer © (2005-05-14 15:01) [21]посмотри, может эт из-за позднего закрытия транзакции, попробуй сдлать коммит после первой вставки и опять открыть транз. перед вставкой во вторую
← →
ANB © (2005-05-14 15:05) [22]Имхо, не есть это кошерно, добавлять в справочник все, что юзеру захочется написать в таблице. Мусора будет много.
← →
Sergey13 © (2005-05-14 15:10) [23]2[22] ANB © (14.05.05 15:05)
Дык никто ее юзать и не будет - диплом. База останется почти девственно чистой. 8-)
← →
_e_u_ © (2005-05-14 15:40) [24]
> Lexer © (14.05.05 15:01) [21]
> посмотри, может эт из-за позднего закрытия транзакции, попробуй
> сдлать коммит после первой вставки и опять открыть транз.
> перед вставкой во вторую
не катит:) придется как то обходить...
← →
ANB © (2005-05-14 17:52) [25]
> Дык никто ее юзать и не будет - диплом.
- а если юзать не будет никто - убери транзакции. Они здесь реально то не очень нужны.
Код у тебя какой то странный. Где поиск такого же издательства ? Переименуй объекты и переменные на понятные идентификаторы и выложи исходники еще раз.
← →
_e_u_ © (2005-05-15 10:27) [26]вобще, использование моего приложения возможно и планируется моим универом...но я уже буду с дипломом, когда начнут проявляться ляпы:)
ANB чтоб было яснее надо кучу текста выложить, щас попробую скомпоновать и объяснить по лучше...
← →
_e_u_ © (2005-05-15 10:41) [27]
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 17:24) [28]Удалено модератором
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.057 c