|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.10.2013, 01:43 | #1 |
------------------
Пользователь
Регистрация: 15.08.2011
Сообщений: 78
|
Перезапись таблицы MYSQL
Юзаю связку стандартных компонентов для получение данных в DBGrid:
Далее выполняю обработку данных DBGrid, и теперь мне нужно сделать запись таблицы назад в MySQL. Я так понимаю мне нужно прописать вместо - "SELECT * FROM таблица", запрос записи, но SQL запросы не знаю вовсе, помогите. Как записать назад данные?
C YBA}|{EH|/|EM Tip.the.besT
|
20.10.2013, 02:00 | #2 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
Смотрите тут ест ьдва варианта использовать TTable и он как бы сам всё запишит, вроде бы я не помню точно уже давно так не работаю...
Есть второй вариант который последнее время использую, да и я думаю он будет более правильным. Допустим есть у вас данные в гриде, пользователь выберает строку которую хочет отобразить или изменить нажимает кнопку открыть/изменить выходит форма с данными даной таблицы... Дальше надо смотреть если открыто для просмотра то только просмотр без редактирования и кнопки сохранить если для изменения то нужно показат ькнопку сохранить и дать возмоность изменять ну пример кода такой Код:
Код:
да и плохо понятно как у вас устроено отображение и занесения изменений ну а SQL запрос на изменение даных Update `Таблица` Set `поле1` = значение1 ,`поле2` = значение2 WHERE id = ади записи которую надо изменить |
20.10.2013, 02:11 | #3 | |
------------------
Пользователь
Регистрация: 15.08.2011
Сообщений: 78
|
Ну я понял вашу мысль, конечно я не понял не смысл sql кода не смысл дефли кода (так как компонент с помощью которого вы делаете не юзал). Можете Var тоже скинуть, а то я не понял, что вы объявили.
А вообще дополняю. Задача мной преследуется несколько иная. Я выгружаю 50к записей в Grid, это товары. Далее сравниваю их с прайсом, что - то удаляю, что - то редактирую и соответственно мне их надо обновить уже в MySQL. То бишь просто заменить таблицу, и в проге ненужно никакого взаимодействия с юзером. Цитата:
C YBA}|{EH|/|EM Tip.the.besT
|
|
20.10.2013, 02:15 | #4 |
------------------
Пользователь
Регистрация: 15.08.2011
Сообщений: 78
|
И ещё, просто я подумал, что если простой запрос - "SELECT * FROM таблица", выгружает всё, то и запись так же можно сделать.
Ну а как вариант, если совсем всё глухо, тупо дропнуть все записи и просто заново заполнить вышеприведённым запросом.
C YBA}|{EH|/|EM Tip.the.besT
|
20.10.2013, 02:38 | #5 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
так) каким образом вы их проверяете? на совпадения? если есть отличие разница между прайсом и выборкой то в выборку делаете изменения?
допустим берёте запись первую из выборки 1, Товар1, 500 руб а впрайсе 1 Товар1 550 руб то вам нужно записать новые занчения в таблицу товаров из прайса? Блин перемудрил с вопросами ну думаю понятно что я хочу спросить) |
20.10.2013, 02:40 | #6 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
как выглядит таблица? как вы проверяете её? тут подругому можно сделать, нужна ли вообще выгрузка в грид? для чего? МОжно просто дать даные из прайса на инсерт или апдейт...
|
20.10.2013, 03:03 | #7 |
------------------
Пользователь
Регистрация: 15.08.2011
Сообщений: 78
|
Выгрузка нужна, так как данные хранятся не в одной таблице. Три таблицы, выгружаются, далее ищем наименование из прайса в таблице. Если есть, то сравниваем данные, если всё одинаково, то далее, иначе, фиксим.
Если не нашли, добавляем. Если остались наименование в таблице которых нет в прайсе, то удаляем их из таблицы. Плюс ко всему, я хочу просто выгрузить, сделать все операции в делфи, а не sql запросами, а потом загрузить обратно. Просто лучше работать в той среде, которую знаешь. Так и мне легче будет, и ошибок меньше получиться.
C YBA}|{EH|/|EM Tip.the.besT
|
20.10.2013, 03:08 | #8 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
ну делать всё в делфи это конечно как вам удобно просто как пример приведу работу с скл
для того чтобы вам допустим изменить значения стоймости товара для какойто категории то вам нужно будет пробежать по всей табилце с условиями что запись принадлежит категории или нет и если принадлежит то изменить при этом ввести датасет в режим редактирования изменить и сделать Post и так к каждой записи в датасете а у вас их там 50к а скл запрос это Код:
|
20.10.2013, 03:12 | #9 |
Форумчанин
Регистрация: 21.05.2008
Сообщений: 495
|
3 таблицы? вы делаете выборку через джойны? или как?
Вообщем мне кажется что вы мудрите, база MySQL очень удобная, можно избежать кучи кода в делфи а ещё если внешнии ключи поставить можно вообще избежать кучи проверок... |
20.10.2013, 03:22 | #10 |
------------------
Пользователь
Регистрация: 15.08.2011
Сообщений: 78
|
Сборку не делаю, просто нужные мне данные в принципе в одной хранятся таблице, но если допустим удалять, то нужно в трёх таблицах удалять. Ну а кстати на берегу(в смысле в проге) будет работать по любому быстрее, чем каждое наименование sql запрос отправлять и ждать возвращения.
Что касается описанного вами алгоритма, не понял немного, что вы имеет под "сделать Post"? В смысли отправить все 50к? А так, я раз выгрузил таблицу в grid, все изменения сделал, и вкинул назад.
C YBA}|{EH|/|EM Tip.the.besT
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Mysql запрос на 2 таблицы | Abuhamed | PHP | 1 | 21.08.2012 08:52 |
Перезапись поля во всех строках таблицы Бд | mmihan | БД в Delphi | 6 | 13.06.2012 13:41 |
MySQL: таблицы и их движки | palevg | БД в Delphi | 4 | 11.02.2011 21:36 |
Связать таблицы (mysql) | aisthetes | SQL, базы данных | 0 | 28.03.2010 14:45 |
Mysql Таблицы вроде.. | Юрий777 | PHP | 4 | 28.02.2008 09:50 |