Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.04 c
10-1094808578
Kusto
2004-09-10 13:29
2005.06.29
Как вернуть список строк?


3-1115898208
-K2-
2005-05-12 15:43
2005.06.29
Проблемы при соединении с БД по локальной сети.


9-1111865916
Bret
2005-03-26 22:38
2005.06.29
Выстрел в GLscene


14-1115127276
vovasin2000
2005-05-03 17:34
2005.06.29
Как работать с Rave Report


14-1117898334
Juice
2005-06-04 19:18
2005.06.29
NTFS ный диск под 98 ой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский