![]() |
|
Модераторы: Akina |
![]()
|
|
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Я все не пойму, как скопировать выбранный столбец первой таблицы в столбец другой таблицы. У этого объекта есть свойство обратиться к элементу в Гриде, как к элементу матрицы или нет?
Кажется я понял, в чем была ошибка с MS DBGrid - если удалить ячейку с текстовым полем, то все равно - пусто в ней или есть какое-то значение, чего не сделаешь с полем, в котором число - если удалил число, то надо заменить его на 0, без разницы целое, дробное оно и т.д. Добавлено @ 20:18 Исчерпывающее описание: http://www.vbnet.ru/articles/Showarticle.aspx?id=195 -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
Можно. Сначала - к столбцу, потом к ячейке. Или к строке, потом к ячейке (вроде бы так). Можно оперировать целыми столбцами и строками. А за мануал спасибо. У меня такойже, только на немецком --------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Вот этот код не работает, мне надо, чтобы столбец из Grid'a (любого - Flex или Data) сохранялся в БД.
Уж скока всего перепробовал и по 2 Data-обекта все бестолку. -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
Я бы предложил каждый раз перекопировать базу...
Т.Е. у тебя (давай на ты) есть база, которую юзер меняет непосредственно - BASA1. Есть та, которую ты сохраняешь по клику - BASA2. Ну, копируй по клику BASA1 в BASA2? Ведь TDBgrid работает с базой напрямую - как Аксес, любое изменение в нем мгновенно сохраняется. Если долго копирует можно маленький сплэш-скрин (даже без прогресс бара, просто с мелкой анимашкой и надписью) "идет обновление структуры базы". Или ты хочешь сказать, что при работе база ВООБЩЕ не меняется? Это сообщение отредактировал(а) Kergan - 19.10.2005, 15:03 --------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
| Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Короче я делаю так: есть TDBgrid1 и Data1 - в них отображается главная БД. И есть TDBgrid2 и Data2 - в них отображается SQL-запрос, т.е. "SELECT [поле 1,2,3,4] FROM DELO". З.Ы. Кажется я сделал то, что требуется, но работает только все наоборот - таблица с БД правится, тока это не та таблица - а главная. Короче буду разбираться. -------------------- i_i (';') (V) ![]() |
||||
|
|||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
Если надоест разбираться, напиши поподробнее о своей проблеме и кинь базу, подолбимся вместе!
--------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Вот код, который подсчитывает число строк в таблице, осталось сделать только переход на последнюю строчку с помощью TDBGrid2.EditActive = True. Вся фишка в следующеем: (я сам дошел до этого): считаем число строк и последнюю строку выделяем, как-будто хотим ее отредактировать, потом просто сохраняем таблицу.
Последняя строка не хочет быть активной. -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
Я че-т не понял. Получается, изначально у тебя с БД TDBgrid НЕ соединен т.е. записи строятся простым запросом, без обратной связи. Когдя работают мои проги с гридом, они напрямую меняют базу и задача кнопы СОХРАНИТЬ сводится к копированию базы в бэкап файл. Когда грузится форма с Гридом, то бэкап файл копируется с именем рабочей базы (на случай, если юзверь че-то изменил, потом сохранил, потом опять изменил и без сохранения вышел).
Код на Form_load такой (здесь код работы с mdb):
У TDBGrid св-во RecordSource = Data1 У Data1 св-в не менял. Это сообщение отредактировал(а) Kergan - 21.10.2005, 14:49 --------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
| Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Я сначала подумал, что лучше будет метод драг-н-дроп, но потом сам написал вот это:
кстати, очень богатый мануал к TrueDBGrid - может перевести его? вывалить на форум + дистрибутив
мне осталось только улучшить этот код: сейчас в БД добавляется только тот столбец, который я выбрал, как сделать так, чтобы сразу вводились 4 поля: SELECT NOM, WO, WO1, WO2 FROM DELO.
-------------------- i_i (';') (V) ![]() |
||||
|
|||||
| Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
И еще вопрос: помните в C++ Builder 5 на вкладке DataAccess (доступ к данным) есть объекты TDataSource и TTable, в VB 6/.NET есть их аналог или только Data, Adodc соответственно? Это сообщение отредактировал(а) Voldemar2004 - 23.10.2005, 12:50 -------------------- i_i (';') (V) ![]() |
||||
|
|||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
Только я рекомендую ПОЛНОСТЬЮ коннект устанавливать в form_load - в том числе имя базы в data, тип соединения и самое важное - связывание data и tdbgrid. Иначе будет потом гемарой - не будет чапать на половине машин т.к. грид обратится к data РАНЬШЕ, чем data - к базе данных. Такой баг мне много крови попортил когда-то...
--------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
У меня опять появились вопросы по DataGrid: на форме 2 ADODC (adodc1 и adodc2), DataGrid1 и DataGrid2 соответственно. RecordSource для DataGrid1 = adodc1, для DataGrid2 = adodc2 открываем файлы *.mdb в первом AdoData (вообще-то в моем случае все немного сложнее - это я для наглядности). Другую БД в во втором AdoData:
если нажать на кнопку проихсодит добавление выбранного столбца 1-ой таблицы в выбранный столбец 2-ой таблицы, НО: только в самый конец строк 2-ой таблицы, а НАДО, чтобы заполнение начиналось с 1-ой строки, т.е.: сейчас работает вот так: 1-ая таблица: 2-ая таблица (1-ый столбик - ПУСТОЙ): | 1 | 0 | 0 | | | 0 | 0 | 0 | | 2 | 0 | 0 | | | 0 | 0 | 0 | | 3 | 0 | 0 | | | 0 | 0 | 0 | | 4 | 0 | 0 | | | 0 | 0 | 0 | копирую 1-ой стоблец 1-ой таблицы в 1-ый столбец 2-ой таблицы: получается вот это: | 1 | 0 | 0 | | | 0 | 0 | 0 | | 2 | 0 | 0 | | | 0 | 0 | 0 | | 3 | 0 | 0 | | | 0 | 0 | 0 | | 4 | 0 | 0 | | | 0 | 0 | 0 | ___________1 ___________2 ___________3 ___________4 А требуется, чтобы было так: | 1 | 0 | 0 | | 1 | 0 | 0 | 0 | | 2 | 0 | 0 | | 2 | 0 | 0 | 0 | | 3 | 0 | 0 | | 3 | 0 | 0 | 0 | | 4 | 0 | 0 | | 4 | 0 | 0 | 0 | Не пойму, что не так работает в моей коде. Это сообщение отредактировал(а) Voldemar2004 - 31.10.2005, 21:45 -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Voldemar2004 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Это у всех так? Или только у меня такая проблема? Если число записей (строк) > 1000. Хотя я сам написал ф-цию, которая нормально работает:
И еще: не копирует первую выбранную строку из Grid1 в Grid2
хотя я знаю что должно быть так:
-------------------- i_i (';') (V) ![]() |
||||||||
|
|||||||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Voldemar2004, вот исправленный код:
Все работает без ошибок. Но только при условии, что число строк первого грида = или > числа строк 2-го грида. Причем я заметил, что если не делать лишних DataX.Recordset.Update (что впрочем надо для того, чтобы юзер видел, что прога работает) - копирование происходит гораздо быстрее. Это я к тому, что если кому-нибудь понадобится, то не спотыкались на тех же граблях, что и я. P.S. Причем Apex True DataGrid (не OLE) не требует ADO (хватит и Data)- что тоже прибавляет скорости работы. -------------------- i_i (';') (V) ![]() |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |