Такое поведение возникает в следующих ситуациях:
- вы используете оба вышеуказанных способа автоматического заполнения полей;
- вы создали триггер, который при вставке записи заполняет поле с помощью последовательности, и при этом используете один из вышеуказанных способов автоматического заполнения полей.
Найден 51 результат
- Чт 08 авг 2013 09:42
- Форум: Universal Data Access Components
- Тема: unitable lastinsertid
- Ответы: 4
- Просмотры: 4967
- Вт 06 авг 2013 14:12
- Форум: Universal Data Access Components
- Тема: unitable lastinsertid
- Ответы: 4
- Просмотры: 4967
Re: unitable lastinsertid
Здравствуйте.
Спасибо за Ваше сообщение, мы воспроизвели проблему с LastInsertId и занимаемся её изучением. Мы сообщим Вам, когда у нас появятся какие-либо результаты.
Для автоматического заполнения полей в PostgreSQL сервере обычно используют последовательности
http://www.postgresql.org/docs/9.1/stat ... uence.html
или псевдо-тип serial
http://www.postgresql.org/docs/9.1/stat ... YPE-SERIAL .
Если Вам необходимо, чтобы при вставке новой записи в dataset поля заполнялись автоматически, Вы можете сделать это одним из следующих способов:
1) если Вы используете serial тип, или в качестве значения по умолчанию для поля выбрана последовательность, то Вам достаточно установить свойство TUniTable.Options.DefaultValues в True, например:
2) если значение по умолчанию для поля не является последовательностью или не задано, Вы можете явно указать имя последовательности (в свойстве TUniTable.SpecificOptions.Values['PostgreSQL.KeySequence']) и имя поля (в свойстве TUniTable.KeyFields), например:
Если же Вам необходимо напрямую обратиться к последовательности, чтобы получить её текущее значение или изменить его, Вы можете использовать специальные PostgreSQL команды http://www.postgresql.org/docs/9.1/stat ... uence.html .
Спасибо за Ваше сообщение, мы воспроизвели проблему с LastInsertId и занимаемся её изучением. Мы сообщим Вам, когда у нас появятся какие-либо результаты.
Для автоматического заполнения полей в PostgreSQL сервере обычно используют последовательности
http://www.postgresql.org/docs/9.1/stat ... uence.html
или псевдо-тип serial
http://www.postgresql.org/docs/9.1/stat ... YPE-SERIAL .
Если Вам необходимо, чтобы при вставке новой записи в dataset поля заполнялись автоматически, Вы можете сделать это одним из следующих способов:
1) если Вы используете serial тип, или в качестве значения по умолчанию для поля выбрана последовательность, то Вам достаточно установить свойство TUniTable.Options.DefaultValues в True, например:
Код: Выделить всё
UniTable1.Options.DefaultValues := True;
Код: Выделить всё
UniTable1.KeyFields := 'id';
UniTable1.SpecificOptions.Values['PostgreSQL.KeySequence'] := 'table1_id_seq';
- Вт 30 июл 2013 12:16
- Форум: MySQL Data Access Components
- Тема: Не получаю ответа на форму обратной связи
- Ответы: 2
- Просмотры: 4797
Re: Не получаю ответа на форму обратной связи
Зравствуйте.
По вопросам связанным с функциональностью наших продуктов вы можете писать на support собака devart * com . По вопросам покупки, обновления наших продуктов и т.п. вы можете писать на sales собака devart * com . Так же вы можете задать ваш вопрос непосредственно на форуме.
По вопросам связанным с функциональностью наших продуктов вы можете писать на support собака devart * com . По вопросам покупки, обновления наших продуктов и т.п. вы можете писать на sales собака devart * com . Так же вы можете задать ваш вопрос непосредственно на форуме.
- Ср 24 июл 2013 09:41
- Форум: PostgreSQL Data Access Components
- Тема: Проблемы с кодировкой при включении UnpreparedExecute
- Ответы: 1
- Просмотры: 11176
Re: Проблемы с кодировкой при включении UnpreparedExecute
Здравствуйте.
Спасибо за информацию. Мы воспроизвели проблему и занимаемся её изучением. Мы сообщим вам, если появятся какие либо результаты по данному вопросу.
Спасибо за информацию. Мы воспроизвели проблему и занимаемся её изучением. Мы сообщим вам, если появятся какие либо результаты по данному вопросу.
- Ср 24 июл 2013 09:39
- Форум: PostgreSQL Data Access Components
- Тема: Странное зависание TPgQuery при выполнении запроса
- Ответы: 1
- Просмотры: 11648
Re: Странное зависание TPgQuery при выполнении запроса
Здравствуйте.
1) Отладка работает в триальной версии. Что бы её использовать, вам необходимо установить свойство TPgQuery.Debug в True и добавить юнит PgDacVcl в uses раздел в любом юните вашего проекта ( детальную информацию о свойстве TPgQuery.Debug вы найдёте здесь http://www.devart.com/pgdac/docs/devart ... _debug.htm ).
2) Метода TPgQuery.ExecSQL отправляет запрос на сервер и ожидает, пока сервер его не выполнит и не вернёт данные. Суммарное время выполнения запроса складывается из времени выполнения запроса сервером и времени передачи данных между сервером и клиентом.
Попробуйте выполнить ваш SQL запрос с помощью PgAdmin и сравнить время выполнения. Если PgAdmin выполняет запрос быстрее чем PgDAC, предоставьте следующую информацию:
- версия сервера;
- текст вашего запроса;
- скрипты создания процедур и таблиц, которые участвуют в запросе.
Если SQL скрипты слишком большие, вы можете прислать мне их на почту - dmitryk*devart*com
1) Отладка работает в триальной версии. Что бы её использовать, вам необходимо установить свойство TPgQuery.Debug в True и добавить юнит PgDacVcl в uses раздел в любом юните вашего проекта ( детальную информацию о свойстве TPgQuery.Debug вы найдёте здесь http://www.devart.com/pgdac/docs/devart ... _debug.htm ).
2) Метода TPgQuery.ExecSQL отправляет запрос на сервер и ожидает, пока сервер его не выполнит и не вернёт данные. Суммарное время выполнения запроса складывается из времени выполнения запроса сервером и времени передачи данных между сервером и клиентом.
Попробуйте выполнить ваш SQL запрос с помощью PgAdmin и сравнить время выполнения. Если PgAdmin выполняет запрос быстрее чем PgDAC, предоставьте следующую информацию:
- версия сервера;
- текст вашего запроса;
- скрипты создания процедур и таблиц, которые участвуют в запросе.
Если SQL скрипты слишком большие, вы можете прислать мне их на почту - dmitryk*devart*com
- Ср 03 июл 2013 09:49
- Форум: MySQL Data Access Components
- Тема: Записать/прочитать массив из BLOB
- Ответы: 4
- Просмотры: 8917
Re: Записать/прочитать массив из BLOB
Здравствуйте.
Что бы гарантировать освобождения TMemoryStream объекта, вы можете включить в ваш код try finally инструкцию следующим образом
В остальном ваш код корректен и вы можете его использовать. Если возникнут ещё вопросы, обращайтесь.
Что бы гарантировать освобождения TMemoryStream объекта, вы можете включить в ваш код try finally инструкцию следующим образом
Код: Выделить всё
Stream:= TMemoryStream.Create;
try
Form1.MyQuery1.SQL.Text:= 'select * from gr where n_id=:dname';
...
...
...
Form1.MyQuery1.Close;
matrix:=nil;
finally
Stream.free;
end;
- Вт 02 июл 2013 11:31
- Форум: MySQL Data Access Components
- Тема: Записать/прочитать массив из BLOB
- Ответы: 4
- Просмотры: 8917
Re: Записать/прочитать массив из BLOB
Здравствуйте.
1) Вы правильно использовали TMemoryStream при работе с параметрами. На предоставленном вами снимке просмотрщика данных видно, что массив из десяти integer чисел сохранился корректно - именно такой последовательностью байт массив хранился в памяти вашего приложения.
2) Для копирования данных из TStream объектов в TField и обратно, вы можете использовать следующий код
Для установки длины динамических массивов используйте метод SetLength (вы его уже использовали в своём коде). После загрузки данных из TField в TStream вы можете определить требуемую длину integer массива по формуле
3) Для сохранении и чтении строк из Blob полей используйте TParam.AsString и TField.AsString, например:
1) Вы правильно использовали TMemoryStream при работе с параметрами. На предоставленном вами снимке просмотрщика данных видно, что массив из десяти integer чисел сохранился корректно - именно такой последовательностью байт массив хранился в памяти вашего приложения.
2) Для копирования данных из TStream объектов в TField и обратно, вы можете использовать следующий код
Код: Выделить всё
TBlobField(MyQuery1.FieldByName('t_id')).LoadFromStream(Stream);
TBlobField(MyQuery1.FieldByName('t_id')).SaveToStream(Stream);
Код: Выделить всё
Stream.Size div SizeOf(integer)
Код: Выделить всё
MyQuery1.FieldByName('t_id').AsString := 'HELLO WORLD';
- Пн 27 май 2013 09:17
- Форум: MySQL Data Access Components
- Тема: RAD Studio Delphi XE4
- Ответы: 6
- Просмотры: 8907
Re: RAD Studio Delphi XE4
Если у вас возникнут ещё какие либо вопросы, обращайтесь.
- Ср 22 май 2013 09:59
- Форум: MySQL Data Access Components
- Тема: RAD Studio Delphi XE4
- Ответы: 6
- Просмотры: 8907
Re: RAD Studio Delphi XE4
Здравствуйте.
На данный момент поддержка RAD Studio XE4 присутствует только в последней версии MyDAC - 8.0.1.
Для доступа к последним версиям MyDAC необходима активная подписка. Если на странице зарегистрированных пользователей вы не видите MyDAC 8.0.1, то возможно ваша подписка уже закончилась. В этом случае для доступа к MyDAC 8.0.1 вам следует продлить подписку. Сделать это вы можете здесь http://www.devart.com/mydac/ordering.html в разделе "Renewals & Upgrades".
Для уточнения информации по вашей подписке вы можете связаться с нашим отделом по лицензированию через страницу контакта на нашем сайте
http://www.devart.com/ru/company/contact.html
На данный момент поддержка RAD Studio XE4 присутствует только в последней версии MyDAC - 8.0.1.
Для доступа к последним версиям MyDAC необходима активная подписка. Если на странице зарегистрированных пользователей вы не видите MyDAC 8.0.1, то возможно ваша подписка уже закончилась. В этом случае для доступа к MyDAC 8.0.1 вам следует продлить подписку. Сделать это вы можете здесь http://www.devart.com/mydac/ordering.html в разделе "Renewals & Upgrades".
Для уточнения информации по вашей подписке вы можете связаться с нашим отделом по лицензированию через страницу контакта на нашем сайте
http://www.devart.com/ru/company/contact.html
- Вт 21 май 2013 17:48
- Форум: MySQL Data Access Components
- Тема: Перекидка баз MyDamp неполучается.
- Ответы: 31
- Просмотры: 26319
Re: Перекидка баз MyDamp неполучается.
Если у вас возникнут ещё вопросы, пожалуйста, обращайтесь.
- Вт 21 май 2013 13:10
- Форум: MySQL Data Access Components
- Тема: Перекидка баз MyDamp неполучается.
- Ответы: 31
- Просмотры: 26319
Re: Перекидка баз MyDamp неполучается.
Здравствуйте.
При вызове TMyDump.BackupQuery данные сохраняются в TMyDump.SQL, после чего их можно сохранить в файл с помощью метода TMyDump.SQL.SaveToFile, например:
Также вы можете сохранить в файл частичную выборку данных из таблицы с помощью метода TMyDump.BackupToFile следующим образом:
При использовании методов BackupQuery и BackupToFile можно указывать только один SQL запрос. Чтобы сохранить результаты нескольких запросов, используйте следующий код:
При вызове TMyDump.BackupQuery данные сохраняются в TMyDump.SQL, после чего их можно сохранить в файл с помощью метода TMyDump.SQL.SaveToFile, например:
Код: Выделить всё
MyDump1->BackupQuery("SELECT * FROM MYTABLE2 WHERE MYVARIBLE = 5");
MyDump1->SQL->SaveToFile("C:\\TableBackup.txt");
Код: Выделить всё
MyDump1->BackupToFile("C:\\TableBackup.txt", "SELECT * FROM MYTABLE2 WHERE MYVARIBLE = 5");
Код: Выделить всё
TStringList* SL = new TStringList;
try
{
MyDump1->BackupQuery("SELECT * FROM MYTABLE1");
SL->AddStrings(MyDump1->SQL);
MyDump1->BackupQuery("SELECT * FROM MYTABLE2 WHERE MYVARIBLE=5");
SL->AddStrings(MyDump1->SQL);
MyDump1->BackupQuery("SELECT * FROM MYTABLE3 INNER JOIN MYTABLE1 ON MYTABLE3.VAR1=MYTABLE1.VAR2");
SL->AddStrings(MyDump1->SQL);
SL->SaveToFile("C:\\TableBackup.txt");
}
__finally
{
SL->Free();
}
- Сб 27 апр 2013 11:10
- Форум: MySQL Data Access Components
- Тема: RAD Studio Delphi XE4
- Ответы: 6
- Просмотры: 8907
Re: RAD Studio Delphi XE4
Здравствуйте.
Новая версия MyDAC 8.0.1 с поддержкой RAD Studio XE4 уже доступна для скачивания.
Новая версия MyDAC 8.0.1 с поддержкой RAD Studio XE4 уже доступна для скачивания.
- Пт 19 апр 2013 10:58
- Форум: MySQL Data Access Components
- Тема: Перекидка баз MyDamp неполучается.
- Ответы: 31
- Просмотры: 26319
Re: Перекидка баз MyDamp неполучается.
Здравствуйте.
Для частичного сохранения данных вы можете использовать метод TMyDump.BackupQuery, например:
Детальную информацию о TMyDump.BackupQuery вы можете найти в документации MyDAC.
Для частичного сохранения данных вы можете использовать метод TMyDump.BackupQuery, например:
Код: Выделить всё
MyDump1.BackupQuery('select * from YourTable where st=0');
- Ср 17 апр 2013 11:41
- Форум: MySQL Data Access Components
- Тема: Различия между query и table
- Ответы: 1
- Просмотры: 4011
Re: Различия между query и table
Здравствуйте.
И TMyTable и TMyQuery одинаковым образом изменяют данные таблиц в БД. Когда вы вставляете, обновляете, удаляете запись в TMyTable или TMyQuery, формируется и выполняется соответствующий SQL запрос.
При открытии таблицы "YourTable" через TMyTable выполняется SQL запросЕсли вы используете этот SQL запрос в TMyQuery, то в этом случае TMyQuery будет вести себя абсолютно идентично TMyTable.
То, что в TMyQuery в SQL запросе могут присутствуют алиасы или виртуальные столбцы - никак не влияет на возможность редактирования существующих полей таблицы БД.
TMyTable и TMyQuery основаны на стандартном классе TDataSet. TMyTable и TMyQuery совместимы со всеми визуальными компонентами которые могут работать с TDataSet.
И TMyTable и TMyQuery одинаковым образом изменяют данные таблиц в БД. Когда вы вставляете, обновляете, удаляете запись в TMyTable или TMyQuery, формируется и выполняется соответствующий SQL запрос.
При открытии таблицы "YourTable" через TMyTable выполняется SQL запрос
Код: Выделить всё
select * from YourTable
То, что в TMyQuery в SQL запросе могут присутствуют алиасы или виртуальные столбцы - никак не влияет на возможность редактирования существующих полей таблицы БД.
TMyTable и TMyQuery основаны на стандартном классе TDataSet. TMyTable и TMyQuery совместимы со всеми визуальными компонентами которые могут работать с TDataSet.
- Ср 17 апр 2013 09:55
- Форум: MySQL Data Access Components
- Тема: Перекидка баз MyDamp неполучается.
- Ответы: 31
- Просмотры: 26319
Re: Перекидка баз MyDamp неполучается.
Здравствуйте.
При попытке выполнить TMyDump.RestoreFromFile из файла с некорректными данными возникает ошибка SQL синтаксиса. Если модификации сохранённого файла не нарушают SQL синтаксис, то невозможно определить, что файл был испорчен.
Пожалуйста, пришлите мне на dmitryk*devart*com некорректный файл, восстановление из которого не вызывает ошибки.
При попытке выполнить TMyDump.RestoreFromFile из файла с некорректными данными возникает ошибка SQL синтаксиса. Если модификации сохранённого файла не нарушают SQL синтаксис, то невозможно определить, что файл был испорчен.
Пожалуйста, пришлите мне на dmitryk*devart*com некорректный файл, восстановление из которого не вызывает ошибки.