Страница 1 из 2
Частичный экспорт баз запросов
Добавлено: 31 авг 2006, 14:43
Torkvemada
Жутко извиняюсь за свою безграмотность, но может быть кто-нибудь подскажет как можно в запросе прописать так, что бы выводилось только ограниченное число записей (на пример,записи с номером меньшим 65'000, или с номером в промежетке с 65'001 по 130'000).
Смысл в том, что в Access импортировать не получается (кодировка русского текста меняется до неузнаваемости), а Excel в случае превышения заветного предела в 65'536 начинает затирать первые записи?
Добавлено: 31 авг 2006, 14:46
WildSery
Тебе же ответили уже.
Ищи-читай FIRST - SKIP.
Добавлено: 31 авг 2006, 14:46
kdv
зря новый топик создал. старый можно переименовать (отредактировав свое письмо), а по вопросу тебе ответили - first/skip в FB, order by rows в IB >6.5 или в FB 2.0.
Добавлено: 31 авг 2006, 14:53
kdv
собственно, если копируемая таблица таки имеет первичный ключ,

то достаточно указать условие where, и покопировать данные в 2 приема
насчет копирования - нужно использовать кодировку в коннекте такую же, с которой база создана или данные в базе. Тогда и в access все покатит. См. настройки odbc, или через что ты там пытаешься в аксес это импортировать.
Добавлено: 31 авг 2006, 15:03
Torkvemada
kdv писал(а):собственно, если копируемая таблица таки имеет первичный ключ, :) то достаточно указать условие where, и покопировать данные в 2 приема :)
Ну собственно говоря, я так и хотел, только не знаю как запрос модифицировать. Можешь примерчик написать, плз?
where first/skip
или как?
ни разу с этим не сталкивался, так сразу сложно понять! :(
Добавлено: 31 авг 2006, 15:45
kdv
тебе это вообще зачем надо?
Можешь примерчик написать, плз?
не хочу. потому что до сих пор не знаю, какая у тебя версия IB/FB.
Добавлено: 31 авг 2006, 18:50
kdv
повторяю вопрос - "какая у тебя версия IB/FB.". От этого зависит ответ на твой исходный вопрос.
Добавлено: 01 сен 2006, 05:54
Torkvemada
kdv писал(а):повторяю вопрос - "какая у тебя версия IB/FB.".
IB >6.5
kdv писал(а):тебе это вообще зачем надо?.".
Хочу в Excel двумя, или тремя заходами вытащить данные запроса.
Добавлено: 01 сен 2006, 10:53
CyberMax
А кто тебе запрещает в проге это делать? Разбиваешь записи датасета на куски по 65535 и вставляешь их в страницы Экселя...
Добавлено: 01 сен 2006, 11:04
Torkvemada
CyberMax писал(а):А кто тебе запрещает в проге это делать?
Никто не запрещает.
Просто я не знаю как это делается
Добавлено: 01 сен 2006, 11:12
CyberMax
Вот это и надо было начинать. Пример (Delphi):
Код: Выделить всё
repeat
for I := 0 to $FFFF do
if not DataSet.Eof then
begin
... // Код вставки записи в Excel
DataSet.Next;
end;
until DataSet.Eof;
Добавлено: 01 сен 2006, 12:12
OX
CyberMax
А нельзя ли пояснить, в чем смысл двух циклов?
А то
Код: Выделить всё
while not DataSet.Eof do
begin
// Код вставки записи в Excel
DataSet.Next;
end;
как-то проще воспринимается...
Добавлено: 01 сен 2006, 12:30
WildSery
Проще-то проще, только ты вернёшься туда, откуда начал, что все записи в один документ не влазят.
Внешний цикл как раз и должен создавать новый документ (CyberMax не вставил комментарий в это место, к сожалению), а вложенный цикл заполняет его фиксированным числом записей.
Добавлено: 01 сен 2006, 12:48
kdv
IB >6.5
что значит > 6.5 ? Это 7.0, 7.1, 7.5 ?
В любом случае в этих версиях нет first/skip, но есть order by ... rows. См. документацию (datadef.pdf) на свою версию.
Добавлено: 01 сен 2006, 12:57
Torkvemada
kdv писал(а):
что значит > 6.5 ? Это 7.0, 7.1, 7.5 ?
В любом случае в этих версиях нет first/skip, но есть order by ... rows. См. документацию (datadef.pdf) на свою версию.
InterBase 7.5, FireBird 2.0
а на сайте на русском языке может быть что-то есть.
Вот это и надо было начинать. Пример (Delphi):
Про Delphi знаю, только, что оно есть
Добавлено: 01 сен 2006, 13:03
WildSery
так IB7.5 или FB2.0?
или оба сразу

Добавлено: 01 сен 2006, 13:04
OX
WildSery
Спасибо, понатно.
Добавлено: 01 сен 2006, 13:07
kdv
а на сайте на русском языке может быть что-то есть.
есть. ты на сайте-то был? В разделе Interbase есть ссылка на переводную документацию по 7.x. а langref.pdf можно читать и в оригинале.
Разработчик ОБЯЗАН уметь читать по английски в таком (минимальном) объеме.
Добавлено: 01 сен 2006, 13:10
CyberMax
WildSery писал(а):Внешний цикл как раз и должен создавать новый документ (CyberMax не вставил комментарий в это место, к сожалению), а вложенный цикл заполняет его фиксированным числом записей.
Думал, что тут и так все понятно...

. Для тех, кто не в курсе, объясняю. По терминологии MS файл Excel'я - книга. Книга состоит из страниц. В страницах находятся строки. В одной странице может быть максимум 65535 строк ($FFFF). То есть на ПК строки отводится 2 байта

. Проведя аналогию, можно сказать, что файл экселя - это БД, страница - это таблица БД. Ну а строка страницы - это запись таблицы.
Да, между
repeat и
for должен быть код создания новой страницы в книге.
Torkvemada писал(а):Про Delphi знаю, только, что оно есть
На чем тогда пишете?
Добавлено: 01 сен 2006, 13:30
WildSery
CyberMax писал(а):Думал, что тут и так все понятно...

Как видишь, есть варианты
