|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
||||||
Перенос данных из одной DBGrid в другую23.07.2011, 16:09. Показов 12720. Ответов 22
Метки нет (Все метки)
Если так переносится только одна строка DBGrid1 первой формы Form1 в DBGrid1 второй формы Form2:
0
|
||||||
| 23.07.2011, 16:09 | |
|
Ответы с готовыми решениями:
22
Перенос данных из одной БД в другую Перенос данных из одной базы в другую Перенос данных из одной таблицы в другую |
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 23.07.2011, 16:45 | |
|
"Пробежкой" по датасету.
А можно скл-запросом. В целом проблема кажется сильно притянутой за уши ибо на кой ляд в базе две одинаковые таблицы ?
1
|
|
|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
||
| 23.07.2011, 19:03 [ТС] | ||
|
Мне нужно перенести несколько столбцов из одной таблицы в другую. Таблицы не одинаковые, но несколько столбцов одинаковых. Как сделать "Пробежку" по DataSet?
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||||||||||||
| 23.07.2011, 21:34 | ||||||||||||||||
begin first; while not eof do begin List1.Add(fieldbyname('...').AsString); ... next; end; end;
1
|
||||||||||||||||
|
19 / 19 / 0
Регистрация: 22.07.2011
Сообщений: 68
|
||||||
| 24.07.2011, 00:45 | ||||||
|
В идеале это делается либо, как уже сказали, конструкцией INSERT ... SELECT,
либо же, если не хочется дублировать данные (а в случае больших таблиц этого лучше не делать) - выбирать их соответствующими запросами (у тебя же есть поля, по которым записи таблицы1 ассоциируется с записями таблицы2), например:
1
|
||||||
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
|
||
| 24.07.2011, 05:47 | ||
|
1
|
||
|
2 / 2 / 0
Регистрация: 06.06.2011
Сообщений: 13
|
|
| 24.07.2011, 08:02 | |
|
begin
Form2.DBGrid1.DataSource.DataSet.First; Form2.DBGrid2.DataSource.DataSet.First; while not Form2.DBGrid1.DataSource.DataSet.Eof do begin Form2.DBGrid1.DataSource.DataSet.Insert; Form2.DBGrid1.DataSource.DataSet.FieldBy Name('Имя_поля').AsString:= Form2.DBGrid1.DataSource.DataSet.FieldBy Name('Имя_поля').AsString; Form2.DBGrid1.DataSource.DataSet.Post; Form2.DBGrid1.DataSource.DataSet.Next; Form2.DBGrid2.DataSource.DataSet.Next; end; НО!! Колличество записей DBGrid2 должно быть равно колиичеству записей DBGrid1 в данном случае, т.е (Form2.DBGrid1.DataSource.DataSet.Record Count= Form2.DBGrid2.DataSource.DataSet.RecordC ount) условие должно соблюдаться Иначе получите ошибку. У вас таблицы БД имеют одинаковое число записей? Если да, то это самый простой вариант. Добавлено через 2 минуты А если таблицы не одинаковы то надо как то проверять в какие конкретно записи второй таблицы нужно вставлять данные из другой. Добавлено через 4 минуты Например вот так: begin Form2.DBGrid1.DataSource.DataSet.First; while not Form2.DBGrid1.DataSource.DataSet.Eof do begin Form1.DBGrid2.DataSource.DataSet.First; while not Form1.DBGrid1.DataSource.DataSet.Eof do begin if True then /// здесь проверяем условие begin Form2.DBGrid1.DataSource.DataSet.Insert; Form2.DBGrid1.DataSource.DataSet.FieldBy Name('Имя_поля').AsString:= Form1.DBGrid2.DataSource.DataSet.FieldBy Name('Имя_поля').AsString; Form2.DBGrid1.DataSource.DataSet.Post; end; Form1.DBGrid1.DataSource.DataSet.Next; end; Form2.DBGrid2.DataSource.DataSet.Next; end;
1
|
|
|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
|||
| 24.07.2011, 12:06 [ТС] | |||
|
В общем есть таблица базы данных Товары. Днные этой таблицы отображаются в DBGrid1. DBGrid2 отображает данные Приходного кассового ордера. Т.е. заполняем приход товаров (какое-то n-е количество записей) и при нажатии Кнопки записи добавляются к существующим записям БД Товаров. Эти БД (Товары и Приход), почти одинаковые, но неодинаковые!!!
0
|
|||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
| 24.07.2011, 16:37 | ||||||
|
>Константин
Ладно бы, что ваш код просто постеснялся бы выложить любой мало-мальски программист-профи ибо он уродлив и выдает в Вас крутого новичка-ламера, ладно бы что код грешит кучей ошибок, но он ведь еще и банально некорректен. Т.е. просто не будет работать ибо алгоритмически неверен. Вот уж действительно иногда лучше жевать (с) Добавлено через 23 минуты
Первое. Ваша БД ни к черту не годится ибо спроектирована безобразно. Чтобы спроекттровать ее правильно, нужно составить МОДЕЛЬ базы данных, в которой прописать ОБЪЕКТЫ и СВЯЗИ между ними. Что касается торговли (у Вас ведь торговля или что-то связанное с нею), то обязательные объекты в этой предметной области: 1) Товар, имеющий характеристики: код, наименование, марка, срок годности, принадлежность к товарной группе, упаковка и т.д., цена (при средневзвешенном учете) или номер партии (при партионном учете) или и то илил другое (альернативно) если смешанный учет. Совокупность объектов образуют "Справочник Товаров" (не путать с ассортиментом, включающим только имеющиеся в наличии товаром) 2)Складская карточка, имеющая характеристики: ссылка на товар, текущий остаток, список ссылок на приходно-расходные накладные (движение), список сальдовых остатков (помесячно), указание на способ списания (FIFO,LIFO,иное - см. правила складского и бух.учета), информация о физическом месте хранения (зона, стеллаж, полка, блок ...) 3)Приходно-расходные документы (накладные - но никак не кассовые ордера - это Вам наврали, по ПКО ни один гвоздь ни один кладовщик никому не выдаст ), состоящие из двух "уровней": заголовка накладной (номер, дата, сумма, от кого получено или кому отпущено и т.д.) и состава (фактуры), перечисляющей позиции товара с указанием кол-ва, цены, НДС и т.д. 4)Контрагенты (поставщики и покупатели) с соотв. реквизитами.. 5)... Уф! Для самого простого учета этого наверно хватит, для полноценного "жизненного" варианта - много чего еще надо добавить. Проще взять 1С торговля и просто посмотреть как там все сделано - лучше всякого учебника ![]() Второе. Без полной переделки и всей базы и Вашей "проги" (которую дучше всего просто выбросить чтобы не мучиться - все равно ничего из написанного вней не пригодится) И эта.. ВЫБРОСИТЬ ПАРАДОКС И БДЕ !!!! И писать сразу для скл-сервера ибо НОРМАЛЬНО РАБОТАЮЩАЯ МНОГОПОЛЬЗОВАТЕЛЬСКАЯ СКЛАДСКАЯ ПРОГРАММА НА БАЗЕ ПАРАДОКС - это нынче реликт почище откопанного в снегах мамонтенка. По определению парадокс не может работать нормально (вообще-то может, конечно, но для этого надо приложить много рук и мозга, не опошленного архангельскими)! Третье. А чего бы Вам вот взять и тупо не купить 1С ? И не мучиться.
2
|
||||||
|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
|
| 24.07.2011, 17:02 [ТС] | |
|
MsGuns, всё конечно замечательно и я сама знаю, что на 1С написать эту программу гораздо быстрее, проще и удобнее
))Но дело в том, что это типа курсовая работа, с данной темой, которую нужно писать именно на Delphi и SQL Server. Мне не нужна какая-то сильно сложная, хорошая и очень грамотно написанная программа. К тому же эту программу сильно смотреть никто не будет... Я пытаюсь её сделать как можно проще и наиболее быстрыми путями, поэтому оно всё вот так =))
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 24.07.2011, 17:37 | |
|
Так вот, много грамотнее и ПРАВИЛЬНЕЕ было бы спроектировать модель документооборота и предметную модель БД (как производную от документооборота). Уже на основании этих моделей составить схему данных, после чего "слепить" саму БД по готовой схеме и "дурак" сможет. Т.е сама программа и не нужна вовсе. Если есть БД и ее бизнес-логика (по сути и образующих схему данных), то программирование уже дело вторичное. Вот такая дипломная работа ИМХО ценна хотя бы потому, что показывает навыки ее автора в проектировании реальных бизнес-процессов, а значит и готовность его (ее) к активной работе в этой области.
Но если у Вас иная задача - показать навыки именно в программировании пользовательского ПО для работы с базами данных по технологии КС,- тогда наверное другое дело.. Тогда пофих что там у вас, товар или аккоунт, бизнес или социология.. Хотя как на мой непросвещенный взгляд, истинный программист - это тот, кто прежде всего в состоянии разобраться в любой предметной области, разложить там все по полочкам, найти "узкие" места и предложить способ их решения. А вовсе не тот, кто умеет кидать батоны на форму..
1
|
|
|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
||
| 25.07.2011, 10:56 [ТС] | ||
|
Мне нужно нечто среднее, т.е. показать навыки и в базах данных и в программировании ПО.
Ладно... Спасибо! Добавлено через 16 часов 48 минут Кстати, не смотря на всё выше написанное, тема по прежнему остаётся актуальной. Мне всё ещё надо узнать, как перенести столбец одного DBGrid в другой.
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 26.07.2011, 10:17 | |
|
Кстати несмотря на все выше написанное, Вы так и не удосужились внятно объяснить что подразумевается под фразой "перенести столбец из одного DBGrid в другой". При этом желательно в терминах не экселя, а либо БД (если дело в переносе информации из одной таблицы в другую), либо визуальных компонент (если вопрос в простом добавлении в грид новой колонки для отображения уже имеющегося поля датасета, который этот грид отображает)
Добавлено через 6 минут А лучше всего описать задачу в терминах "сторожей и уборщиц", так будет лучше всего (заодно научитесь ясно для оппонента формулировать свои мысли).
0
|
|
|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
|||||||||||
| 26.07.2011, 10:36 [ТС] | |||||||||||
|
Надеюсь, в таком виде будет более ясно:
В БД у меня есть 2 таблицы tabl1 и tabl2. В tabl1 поля: a, a1, a2, a3; В tabl2 Поля: b, a1, a2, b3. Как запросом скопировать все записи из столбцов a1 и а2 таблицы tabl1 в a1 и a2 tabl2? Нужно не сформировать эту вторую таблицу типа:
Нужна процедура для кнопки первой формы, на которой находится DBGrid, отражающая данные tabl1. При нажатии кнопки, записи столбцов переносятся в таблицу tabl2, которая отражается на второй форме Form2.DBGrid. Не получается составить нормальные запрос в процедуре к кнопке. У меня это выглядит так, но ...
Да и к тому же эта процедура не работает, она выдаёт ошибку.
0
|
|||||||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||||||||||||
| 26.07.2011, 11:10 | ||||||||||||||||
|
Запросом:
Методами TDataSet:
Как Вы догадались, я умышленно вместо Query употребил ADODataSet ибо так методологически правильнее ! Но Вы, конечно, можете оставить свой любимый "кверик" - в этом случае просто везде в коде поменяйте "DataSet" на "Query" - все будет весело бегать ![]() Добавлено через 6 минут И еще важно ! Не употребляйте все эти Query1, Table4, Form1 и т.д. Даже в таком микроскопическом коде, что я Вам привел, такая нотация приводит к мельтешению в глазах, значительно затрудняя чтение кода. Если сзделать некоторые замены, код просто преобразится и будет "ласкать" глаз. Попробуйте зделать такие замены:
Вы убедитесь насколько я прав
1
|
||||||||||||||||
|
19 / 19 / 0
Регистрация: 22.07.2011
Сообщений: 68
|
||||||
| 26.07.2011, 11:22 | ||||||
|
если я не ошибаюсь, ты забыла вызвать метод SQL.Open
если у тебя во второй таблице есть столбец, куда надо пихать значения из первого, наверное, придется делать так:
1
|
||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
| 26.07.2011, 11:56 | ||||||
0
|
||||||
|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
|
| 26.07.2011, 11:56 [ТС] | |
|
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 26.07.2011, 12:00 | |
|
Ошибка значит то, что залюбовавшись Вашим аватарчиком (хочется верить, что это непосредственно Вы в реале), я напрочь позабыл, что в дельфи в отличие от си для присвоения надоть употреблять двоеточие перед равенством
1
|
|
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
|
||
| 26.07.2011, 12:07 | ||
|
0
|
||
| 26.07.2011, 12:07 | |
|
Помогаю со студенческими работами здесь
20
Перенос данных из одной таблицы в другую Перенос данных из одной таблицы в другую Firebird 2.1.Перенос данных из одной таблицы в другую. Кнопки: перенос данных из одной таблицы в другую Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|