Ребята, помогите! Пишу такой запрос:
[code]
ADOQUERY1.Active:=false;
ADOQUERY1.Close;
ADOQUERY1.SQL.Clear;
ADOQUERY1.SQL.Add('Select *');
ADOQUERY1.SQL.Add('From pr');
ADOQUERY1.SQL.Add('WHERE id_op=''' + DBEdit1.Text + '''');
ADOQUERY1.Open;
ADOQUERY1.Active:=true;
[/code]
Но почему то результат не выводит…мож с DBEdit запорс по другому по другому пишется?
5 февраля 2010 в 10:02
Кстати, Антон Щиров, спасибо, будет настроение перепишу все запросы с параметрами)))
так вроде и уровень программирования выше)))
4 февраля 2010 в 20:02
а хз, нас так учили))) а я делаю так, как училили)))
4 февраля 2010 в 0:01
Все будет работать, пока не встретится одинарная кавычка.
Используйте параметры
[src delphi]Form2.ADOQUERY3.Close;
Form2.ADOQUERY3.SQL.Text := 'Select * From pr WHERE id_op= :id';
Form2.ADOQUERY3.ParamByName('id').Value := Form2.DBEdit1.Field.AsVariant;
Form2.ADOQUERY3.Open;[/src]
Еще глупый вопрос это зачем делается?
[src delphi]Form2.ADOQUERY3.Open;
Form2.ADOQUERY3.Active:=true;[/src]
Для надежности?
3 февраля 2010 в 20:01
ну потому что данных очень много, и задолбаешься этот id искать, а так просто строчку выделил, он его захватил и выдал результат. И для красоты невидимым эдит сделала)))
3 февраля 2010 в 20:01
Понятно просто про размер бд не было разговора))))
3 февраля 2010 в 19:05
А почему бы не попробовать с выпадающим списком попробовать, данные как я понимаю же нужно выбирать по одному полю id из запроса на выборку, а не вводить..
3 февраля 2010 в 18:05
Ребятки, спасибо Вам всем огромное!!! Работает, главное работает!!! Пока мне этого достаточно!!! Спасибо!!! А потом посмотрим..)))
3 февраля 2010 в 18:05
Я на новой форме DBEdit поставила, данные он берет от главной таблицы и показывает результат. Это главное!!!
3 февраля 2010 в 18:01
Да сцепи ты два датасета через свойство DataSource подчиненного датасета.
3 февраля 2010 в 16:00
>>Валентина Шабанова
>>сегодня в 14:56
>>Когда делаешь этот запрос с простым Edit, он работает, а вот с DBEdit
>>нет(
>>А мне надо чтоб данные автоматически захватывались, а не вводились.
У меня была такая же ситуация, только я получал данные из нижней правой ячейки заполняемого DBGrid =)
Выглядело это вот так:
void __fastcall TForm1::ADOQuery1AfterPost(TDataSet *)
{
if (PageControl1->ActivePage ==TSLot)
{
int j =ADOQuery1->FieldByName("Количество в партии")->Value;
String num = ADOQuery1->FieldByName("Номер партии")->Value;
for (int i = 0;i < j; ++i)
{
ADOCommand1->CommandText = "INSERT INTO [Единицы товара]([Номер партии])VALUES ("+num+")";
ADOCommand1->Execute();
}
}
//…
}
3 февраля 2010 в 16:00
Если запросы должны отображаться _не одновременно_, то вообще не вижу проблемы. Просто меняешь текст запроса и выполняешь Open. Связанный DBGrid автоматически отобразит это.
//i078.radikal.ru/1002/41/feb10c3635d7.jpg
3 февраля 2010 в 15:05
Разные запросы в одной таблице одновременно отобразить не получится. Тебе ведь надо одновременно?
А если запросы совместимы для объединения, то можно использовать UNION.
//www.sql.ru/docs/sql/u_sql/ch14.shtml
3 февраля 2010 в 15:05
нет, не одновременно. лан,это все ерунда, на новой форме отображаться будут это даже лучше, красивее чтоли. Но чет я наверн не так пишу:
Form2.ADOQUERY3.Active:=false;
Form2.ADOQUERY3.Close;
Form2.ADOQUERY3.SQL.Clear;
Form2.ADOQUERY3.SQL.Add('Select *');
Form2.ADOQUERY3.SQL.Add('From pr');
Form2.ADOQUERY3.SQL.Add('WHERE id_op=''' + Form2.DBEdit1.Text + '''');
Form2.ADOQUERY3.Open;
Form2.ADOQUERY3.Active:=true;
и вот он опять зараза не пашет( Что за наказание? не понимаеткак брать данные от Form2.DBEdit1.Text…
вот блин…(
3 февраля 2010 в 15:05
запрос пишу на форме3.
3 февраля 2010 в 15:00
Аллилуйааа))) просто по ходу их нельзя в этой же таблицы отображать))) это конечно плохо….но все же)))
Ребят, если вдруг знаете как отображать разные запросы в одной таблицы то напишите, плиз.
Всем спасибо!!!
3 февраля 2010 в 14:05
Когда делаешь этот запрос с простым Edit, он работает, а вот с DBEdit нет(
А мне надо чтоб данные автоматически захватывались, а не вводились.
3 февраля 2010 в 14:04
MS SQL Server
да обычно подсоединяюсь, как всегда, с помощью ADOConnection и все такое)
Да, запросы все работают, и этот работает, ток пустой результат выдает, т.к. по ходу данные не обрабатываются в запросе.
Вот.
3 февраля 2010 в 14:03
Пара дурацких вопросов:
1) К какой базе и как коннектитесь?
2) Хоть какой-нить запрос к этой базе работает?
3 февраля 2010 в 14:02
ребят, только что попробовала сделать запрос с DBEdit для главной таблицы и точно такой же результат-пустое поле. Значит вся проблема в DBEdit.
Тогда у меня такой вопрос, можно ли как нибудь захватить данные из таблицы(одно поле) и использовать их в запросах?
3 февраля 2010 в 14:01
дык разницы никакой нет.
3 февраля 2010 в 14:01
видимо вся проблема в том, что id_op берется из одной табл., а сравнивается с другой. И когда запрос выполняется он теряется, я так понимаю он его не видит. И как это исправить понятия не имею, с DBEdit первый раз запрос формирую.
3 февраля 2010 в 13:03
ADOQUERY1.SQL.Add('Select * From pr WHERE id_op=''' + DBEdit1.Text + '''');
3 февраля 2010 в 13:03
имхо так получится
3 февраля 2010 в 13:03
а иначе получается, что ты каждую часть запроса по отдельности кидаешь, и единый не формируется
3 февраля 2010 в 13:00
Может, запрос на самом деле выдает пустое множество?
3 февраля 2010 в 13:00
Попробуйте просто "SELECT * FROM pr "
3 февраля 2010 в 13:00
в DBEdit1 вводится id_op из BDGrid. Там пару запросов на нее есть и вот выделяем строчку с нужными данными, он захватываетid_op, записывает его в DBEdit1 и потом на основе этих данных выводит результат. Ну это в идиале, а так не работает. И ошибки нет, просто пустой BDGrid. Может в [WHERE id_op=''' + DBEdit1.Text + '''] ошибка? надо тут как то по другому реализовывать?
3 февраля 2010 в 13:00
нет, мне нужны именно данные соответствующие этому id_op
3 февраля 2010 в 12:05
ну вообщето это полный, ну лан:
[code]
procedure TForm2.Button4Click(Sender: TObject);
begin
ADOQUERY1.Active:=false;
ADOQUERY1.Close;
ADOQUERY1.SQL.Clear;
ADOQUERY1.SQL.Add('Select *');
ADOQUERY1.SQL.Add('From pr');
ADOQUERY1.SQL.Add('WHERE id_op=''' + DBEdit1.Text + '''');
ADOQUERY1.Open;
ADOQUERY1.Active:=true;
end;
[/code]
3 февраля 2010 в 12:05
он результат не выдает, ошибку не дает, просто пустое BDGrid
3 февраля 2010 в 12:05
ADOQUERY1.Active может все-таки true делать?
И то, что вы написали второй раз – это не текст запроса, это код, который его формирует. Интересно увидеть всё предложение "SELECT…". Что вводится в DBEdit1?
Например,
"Select * From pr WHERE id_op=?????"
Посмотрите через отладчик, что в итоге получается в ADOQUERY1.SQL.Text
3 февраля 2010 в 12:04
напиши полный текст запроса