Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизВ Access есть внутренняя сортировка? Найти похожие ветки
← →
JJ (2012-02-11 19:47) [0]Здравствуйте!
Проблема следующая. Есть БД Access и в ней таблица. В таблице есть столбец «СolNumber». Когда я загружаю и смотрю эту таблице то данные автоматически упорядочены по столбцу ColNumber. А когда я загружаю их через ADOQuerty то получается следующее:
FrmMain.ADOQuery1.First;
I:=0;
While not FrmMain.ADOQuery1.Eof do Begin
S:=FrmMain.ADOQuery1.Fields.FieldByName("PoleName").asstring;
a:=FrmMain.ADOQuery1.RecNo;
FrmMain.ADOQuery1.Next;
End;
Так вот казалось бы записи RecNo будут идти подряд. В действительности "a" присваивается значение 1,2,3,4, а потом 28,29, а лишь потом 5,6,7,8???????Почему так происходит? Мне казалось что номера записей должны быть упорядочены и RecNo должен в цикле увеличиваться на 1, а в действительности этого нет. Т.е. есть какая-то внутренняя сортировка? Как тогда «пересортировать таблицу» в соответствии с RecNo? Или есть какой-нибудь другой параметр, который можно было бы использовать вместо RecNo?
Да и еще одно.
Когда я перемещаюсь по записям в таблице через Access, там то запись внизу нормально увеличивались на единицу?
← →
sniknik © (2012-02-11 21:35) [1]> а в действительности этого нет.
бред.
> Как тогда «пересортировать таблицу» в соответствии с RecNo?
RecNo в ADO расчетное значение, и значит будет "правильное" при любой сортировке локального рекордсета.
другое дело использовать его не совсем правильно...
> там то запись внизу нормально увеличивались на единицу?
не нормально, а ОБЫЧНО, и только потому, что всем плевать на значение инкремента, оставляют дефаултный = 1, но поставь -1 например оно "там внизу" будет уменьшаться.
← →
JJ (2012-02-11 23:03) [2]Я объясню зачем мне оно нужно.
У таблице привязана кнопка «Вырезать»
Пользователь в DbGrid-е может вырезать не одну ячейку а диапазон (в т.ч. по строкам).
Так вот я занес эти данные из таблицы DbGrid в буфер а теперь мне необходимо в этом диапазоне БД данные очистить. Если бы можно было выделить ТОЛЬКО 1 строку, то это можно было бы сделать через DataSet источника DataSource по активной записи, но так как речь идет о диапазоне, то записи необходимо перебрать вот я и использую RecNO - но учитывая, что он может идти не последовательно (см. 1 пост) – то, как тогда сделать я не знаю…..Можете помочь?
← →
Сергей М. © (2012-02-11 23:36) [3]
> но так как речь идет о диапазоне, то записи необходимо перебрать
в св-ве DBGrid.SelectedRows хранится список закладок на все записи , выделенные юзером в дан.момент в гриде - вот его и "перебирай", на то он и существует.
← →
JJ (2012-02-11 23:42) [4]О как супер! буду пробовать
← →
JJ (2012-02-11 23:47) [5]Написал и призадумался…
SelectedRows – да….но мне необходимо связать строки которые выделены в DBGRID с набором данных. Т.е. SelectedRows позволяет перебрать строки в DBGRID но не позволяет занести туда данные (т.е. DbGrid.Cells[1,1,]:=’Привет’ – не работает). А DataSource – позволяет занести туда данные черех DataSet но я непонимаю как перебрать строки в соответствии со строками выделенными в DbGrid!!!
← →
sniknik © (2012-02-11 23:48) [6]> но учитывая, что он может идти не последовательно (см. 1 пост)
а давай не будем бред учитывать (см. 2 пост)
← →
sniknik © (2012-02-11 23:50) [7]> как перебрать строки в соответствии со строками выделенными в DbGrid!!!
а что говорит по этому поводу Кальтенбруннер? ээээ т.е. справка?
← →
Сергей М. © (2012-02-11 23:52) [8]
> связать строки которые выделены в DBGRID с набором данных
Ты не поверишь - каждая закладка в этом списке и есть та самая связь.
Переходишь по закладке (GotoBookmark) - соотв.запись в НД становится активной
← →
JJ (2012-02-11 23:53) [9]не вижу....поясните пож-ста
← →
sniknik © (2012-02-11 23:59) [10]поясняю...
пишешь в дельфе интересующее тебя понятие, например упомянутый SelectedRows, встаеш на него курсором, нажимаешь Ctrl+F1, ... наслаждаешься развернутым ответом, иногда с примером.
← →
sniknik © (2012-02-12 00:01) [11]да, как ни удивительно, но "фокус" сработает и с после упомянутым GotoBookmark, и вообще по любому оператору/методу/....
← →
JJ (2012-02-12 14:26) [12]Спасибо! Но возникла еще одна проблема я пользуюсь неDBGrid а TMS DbAdvGrid в нем нет как написано в справке по SelectedRows:
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
вот этого там нет DBGrid1.SelectedRows.Items[i]
но есть DBGrid1.rows[i]
или DBAdvGrid1.SelectRows(i,1)
Но если я ставлю 1 то получаю ошибку при выполнении программы...а второй вариант вообще не работает
Может быть кто-нить сталкивался?
← →
Сергей М. © (2012-02-12 16:37) [13]Похоже программирование - это не твоё
← →
mamon (2012-02-12 17:00) [14]Читая от начла немного запутался...
Если хочешь свою сортировку то вот:
ADOQuery1.Sort:= "имя_поля"
Если хочешь вырезать диапазон то как то ты в не ту сторону копаешь...
← →
JJ (2012-02-12 18:26) [15]Так Все таки....
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
В моем компоненте Tms Adv DB Grid этого нет! Перечисленные два варианта:
DBAdvGrid1.rows[i]
DBAdvGrid1.SelectRows(i,1)
дают ошибку при выполнеиии программы... что необходимо поставить
GotoBookmark(pointer(???));
← →
Плохиш © (2012-02-12 18:46) [16]
> что необходимо
Нанять программиста.
← →
Inovet © (2012-02-12 18:56) [17]> [15] JJ (12.02.12 18:26)
> что необходимо поставить
Справка есть к Tms Adv DB Grid? Вней посмотреть что это за
DBAdvGrid1.SelectRows(i,1)
функция что ли? Что принимает, что возвращает? Справки нет - смотреть в примерах. Примеров нет - смотреть в исходниках. Исходников нет - догадаться по прототипу.
← →
mamon (2012-02-13 11:02) [18]Говоришь что из DBGrid’а ты выделил диапазон строк и хранишь их в буфере, непонял как ты это зделал но как то так это будет...
Создай в таблице индексное поле (У меня по умолч. "Код")Цикл от начала диапазона до конца выполнить
If ADOQuery1.Locate("Код", "Значения", [loPartialKey]) then
Begin
ADOQuery2.Insert;
ADOQuery2поля1.AsValue:= ADOQuery1поля1.AsValue;
...
...
ADOQuery2.Post;
ADOQuery1.Delete;
End;
← →
MsGuns © (2012-02-13 11:43) [19]Он чё, эксел захотел из акцеса сделать ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.073 c