Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > SQL: изменить если существует или добавить новую


Автор: Ibragim 18.3.2007, 02:25
Ночи доброй.
Помогите плз. кому не лень с таким вопросом.

Условие. 
- БД MySql, доступ через Zeos-компоненты (Если точно, ZQuery)
- поле Field1 в базе - индекс, уникальная строка
- есть также другие поля разных типов

- пользователь создает (пока еще не подключаясь к базе) еще несколько записей (ввел данные, скажем, в TStringGrid)

Необходимо:
- для записей, Field1 которых равен вновь введеному Field1, изменить все остальные поля на вновь введеннные
- если существующей записи с таким значением Field1 нет в базе, то добавить запись со значениями, равными введенным

Дополнительно: очень хотелось бы делать это SQL-запросом(ами), но если задача решается свойствами ZQuery лучше - посоветуйте как.

Заранее спс.

Автор: pavelv 18.3.2007, 07:46
не знаком с ZQuery, но принцип думаю везде один:
1) Выбираешь все записи из таблицы у которых Field = Filed1 в ZQuery1:
    select *
    from Table1(та таблица в которой тебе надо вставить или апдейтить)
    where Field = Field1

2) Дальше проверяешь есть ли записи в искомом запросе, наверное что-то вроде:
if ZQuery1.RecordCount> 0 then
//апдейтим
ZQuery1.sql.text := 'update Table1 values (Field1,*,*,*) where Field = Field1'
else
//вставляем
ZQuery1.sql.text := 'insert into Table1 values (Field1,*,*,*)'
//выполняешь запрос
ZQuery1.Open;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)