|
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
|
||||||
Перенос данных из одной DBGrid в другую23.07.2011, 16:09. Показов 12600. Ответов 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.Перенос данных из одной таблицы в другую. Кнопки: перенос данных из одной таблицы в другую Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|