singlepost

проблемы сDBEdit ))) << На главную или назад  

Ребята, помогите! Пишу такой запрос:
[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 запорс по другому по другому пишется?

80 ответов в теме “проблемы сDBEdit )))”

  1. 32
    Валентина Шабанова ответил:

    Кстати, Антон Щиров, спасибо, будет настроение перепишу все запросы с параметрами)))
    так вроде и уровень программирования выше)))

  2. 31
    Валентина Шабанова ответил:

    а хз, нас так учили))) а я делаю так, как училили)))

  3. 30
    Антон Щиров ответил:

    Все будет работать, пока не встретится одинарная кавычка.

    Используйте параметры
    [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]
    Для надежности?

  4. 29
    Валентина Шабанова ответил:

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

  5. 28
    Александр Семенов ответил:

    Понятно просто про размер бд не было разговора))))

  6. 27
    Александр Семенов ответил:

    А почему бы не попробовать с выпадающим списком попробовать, данные как я понимаю же нужно выбирать по одному полю id из запроса на выборку, а не вводить..

  7. 26
    Валентина Шабанова ответил:

    Ребятки, спасибо Вам всем огромное!!! Работает, главное работает!!! Пока мне этого достаточно!!! Спасибо!!! А потом посмотрим..)))

  8. 25
    Валентина Шабанова ответил:

    Я на новой форме DBEdit поставила, данные он берет от главной таблицы и показывает результат. Это главное!!!

  9. 24
    Михаил Бураш ответил:

    Да сцепи ты два датасета через свойство DataSource подчиненного датасета.

  10. 23
    Денис Гублин ответил:

    >>Валентина Шабанова
    >>сегодня в 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();
    }
    }
    //…
    }

  11. 22
    Денис Гублин ответил:

    Если запросы должны отображаться _не одновременно_, то вообще не вижу проблемы. Просто меняешь текст запроса и выполняешь Open. Связанный DBGrid автоматически отобразит это.
    //i078.radikal.ru/1002/41/feb10c3635d7.jpg

  12. 21
    Денис Гублин ответил:

    Разные запросы в одной таблице одновременно отобразить не получится. Тебе ведь надо одновременно?
    А если запросы совместимы для объединения, то можно использовать UNION.
    //www.sql.ru/docs/sql/u_sql/ch14.shtml

  13. 20
    Валентина Шабанова ответил:

    нет, не одновременно. лан,это все ерунда, на новой форме отображаться будут это даже лучше, красивее чтоли. Но чет я наверн не так пишу:
    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…
    вот блин…(

  14. 19
    Валентина Шабанова ответил:

    запрос пишу на форме3.

  15. 18
    Валентина Шабанова ответил:

    Аллилуйааа))) просто по ходу их нельзя в этой же таблицы отображать))) это конечно плохо….но все же)))
    Ребят, если вдруг знаете как отображать разные запросы в одной таблицы то напишите, плиз.
    Всем спасибо!!!

  16. 17
    Валентина Шабанова ответил:

    Когда делаешь этот запрос с простым Edit, он работает, а вот с DBEdit нет(
    А мне надо чтоб данные автоматически захватывались, а не вводились.

  17. 16
    Валентина Шабанова ответил:

    MS SQL Server
    да обычно подсоединяюсь, как всегда, с помощью ADOConnection и все такое)

    Да, запросы все работают, и этот работает, ток пустой результат выдает, т.к. по ходу данные не обрабатываются в запросе.
    Вот.

  18. 15
    Павел Потапов ответил:

    Пара дурацких вопросов:
    1) К какой базе и как коннектитесь?
    2) Хоть какой-нить запрос к этой базе работает?

  19. 14
    Валентина Шабанова ответил:

    ребят, только что попробовала сделать запрос с DBEdit для главной таблицы и точно такой же результат-пустое поле. Значит вся проблема в DBEdit.
    Тогда у меня такой вопрос, можно ли как нибудь захватить данные из таблицы(одно поле) и использовать их в запросах?

  20. 13
    Валентина Шабанова ответил:

    дык разницы никакой нет.

  21. 12
    Валентина Шабанова ответил:

    видимо вся проблема в том, что id_op берется из одной табл., а сравнивается с другой. И когда запрос выполняется он теряется, я так понимаю он его не видит. И как это исправить понятия не имею, с DBEdit первый раз запрос формирую.

  22. 11
    Николай Донцов ответил:

    ADOQUERY1.SQL.Add('Select * From pr WHERE id_op=''' + DBEdit1.Text + '''');

  23. 10
    Николай Донцов ответил:

    имхо так получится

  24. 9
    Николай Донцов ответил:

    а иначе получается, что ты каждую часть запроса по отдельности кидаешь, и единый не формируется

  25. 8
    Денис Гублин ответил:

    Может, запрос на самом деле выдает пустое множество?

  26. 7
    Денис Гублин ответил:

    Попробуйте просто "SELECT * FROM pr "

  27. 6
    Валентина Шабанова ответил:

    в DBEdit1 вводится id_op из BDGrid. Там пару запросов на нее есть и вот выделяем строчку с нужными данными, он захватываетid_op, записывает его в DBEdit1 и потом на основе этих данных выводит результат. Ну это в идиале, а так не работает. И ошибки нет, просто пустой BDGrid. Может в [WHERE id_op=''' + DBEdit1.Text + '''] ошибка? надо тут как то по другому реализовывать?

  28. 5
    Валентина Шабанова ответил:

    нет, мне нужны именно данные соответствующие этому id_op

  29. 4
    Валентина Шабанова ответил:

    ну вообщето это полный, ну лан:
    [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]

  30. 3
    Валентина Шабанова ответил:

    он результат не выдает, ошибку не дает, просто пустое BDGrid

  31. 2
    Денис Гублин ответил:

    ADOQUERY1.Active может все-таки true делать?
    И то, что вы написали второй раз – это не текст запроса, это код, который его формирует. Интересно увидеть всё предложение "SELECT…". Что вводится в DBEdit1?
    Например,

    "Select * From pr WHERE id_op=?????"

    Посмотрите через отладчик, что в итоге получается в ADOQUERY1.SQL.Text

  32. 1
    Денис Гублин ответил:

    напиши полный текст запроса

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.