none
Обращение к базе Access RRS feed

  • Вопрос

  • SELECT tab_1.fld_1, tab_1.id

    FROM tab_1 WHERE (((tab_1.id)>25))
    ORDER BY tab_1.id;

    Первый запрос на выборку нужных значений с базы Access

    SELECT DCount("id","qw1","id<=" & CStr([id])) AS NumP, qw1.fld_1, qw1.id
    FROM qw1 ORDER BY qw1.id;

    И второй, который нумерует строки в первом. Первый запрос сохранен в базе под именем qw1

    Идея такова, в базе есть список предметов с ID 1,2,3,4... нужно отобрать предметы с одинаковыми свойствами и из получившейся выборки (ID - 1,4,6,7,8....) отобрать начиная с 10 строчки 10 предметов (в программе выбирается страницы с предметами. 1 страница от 1 до 10 предмета, 2 - от 10 до 20) Через Access в голову приходит только такой вариант, с двумя запросами. Вот тут проблема. Как программно выполнить запрос из запроса? Выполнить сначала первый:

    Dim Cmd As New OleDb.OleDbCommand("SELECT ....;", Cnn)
    Dim Rec As OleDb.OleDbDataReader = Cmd.ExecuteReader

    И как-то после этого второй, уже из полученного Rec? Помогите пожалуйста.
    • Перемещено Abolmasov Dmitry 21 июня 2012 г. 7:54 (От:Настольные ПК)
    20 июня 2012 г. 11:36

Ответы

  • Не было accessа под рукой

    SELECT (SELECT COUNT(*) FROM tab_1 AS o2 WHERE o2.id<= o1.id AND ((o2.id)>25)) AS NumP ,tab_1.fld_1, tab_1.id FROM tab_1 AS o1
    
    WHERE (((o1.id)>25))
    
    ORDER BY o1.EMPID

    Надо условие внешнего отбора вставить в запрос который вычисляет № строки

    SELECT COUNT(*) FROM tab_1 AS o2 WHERE o2.id<= o1.id AND ((o2.id)>25)

    • Помечено в качестве ответа Siompc 20 июня 2012 г. 19:46
    20 июня 2012 г. 19:11

Все ответы

  • А почему бы вам не обьеденить эти 2 запроса в 1?

    SELECT (SELECT COUNT(*) FROM tab_1 AS o2 WHERE o2.id<= o1.id) AS NumP ,tab_1.fld_1, tab_1.id FROM tab_1 AS o1

    WHERE (((o1.id)>25))

    ORDER BY o1.EMPID


    а дальше добавлять условие по № записей?
    • Изменено Brash_O 20 июня 2012 г. 13:13
    20 июня 2012 г. 13:12
  • Отбор идет не по ID а по свойству ItemGens. В итоге ID предметов идет 1,5,7,8... и нумерация строк получается 1,4,5,6

    20 июня 2012 г. 18:45
  • Не было accessа под рукой

    SELECT (SELECT COUNT(*) FROM tab_1 AS o2 WHERE o2.id<= o1.id AND ((o2.id)>25)) AS NumP ,tab_1.fld_1, tab_1.id FROM tab_1 AS o1
    
    WHERE (((o1.id)>25))
    
    ORDER BY o1.EMPID

    Надо условие внешнего отбора вставить в запрос который вычисляет № строки

    SELECT COUNT(*) FROM tab_1 AS o2 WHERE o2.id<= o1.id AND ((o2.id)>25)

    • Помечено в качестве ответа Siompc 20 июня 2012 г. 19:46
    20 июня 2012 г. 19:11
  • Ух.. Ну наконец-то :) Работает, спасибо! 3 дня в интернете искал ответ, без этого не могу дальше работать :) Спасибо!
    20 июня 2012 г. 19:46
  • Незачто
    20 июня 2012 г. 19:48