Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 38 39 40 [41] 42   вперед  Ctrl
 Re: FireDAC  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1161
Consider accessing the singleton instance of TFDManager through the FDManager function instead of explicitly creating it.

FDManager - синглтон. Нет смысла использовать несколько экземпляров.
1 ноя 18, 20:38    [21721940]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
X-Cite, это да, но если я создаю новый проект и хочу использовать без компоненты, то выскакивает ошибка, что не найден интерфейс, а вот если кинуть компоненту, скомпилить, а потом ее удалить, то все будет хорошо
2 ноя 18, 08:25    [21722099]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
Подскажите, а есть ли быстрый способ копирования массива для FireDac?

Вот в DOA я делаю так:

arrVariant:= VarArrayCreate([0, ASize-1], varOleStr);
DOA_Query.DeclareVariable('Par', otString);
DOA_Query.DimPLSQLTable('Par', ASize, 10);
DOA_Query.SetVariable(0, arrVariant);


а в FireDac приходиться так

FDQuery.ParamByName('Par').ArraySize:= ASize;
FDQuery.ParamByName('Par').ArrayType:= atTable;
FDQuery.ParamByName('Par').DataType:= ftString;
FDQuery.ParamByName('Par').Size:= 10;
for i:=0 to ASize-1 do
FDQuery.Params[0].Values[i]:= arrVariant[i];
2 ноя 18, 09:41    [21722166]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
FDQuery.ParamByName('Par').ArraySize:= ASize;
FDQuery.ParamByName('Par').ArrayType:= atTable;
FDQuery.ParamByName('Par').DataType:= ftString;
FDQuery.ParamByName('Par').Size:= 10;
FDQuery.ParamByName('Par').Value:= arrVariant;
2 ноя 18, 11:50    [21722347]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1161
cptngrb
X-Cite, это да, но если я создаю новый проект и хочу использовать без компоненты, то выскакивает ошибка, что не найден интерфейс, а вот если кинуть компоненту, скомпилить, а потом ее удалить, то все будет хорошо


Потому что в uses надо прописать юниты, в которых происходит регистрация реализаторов этих интерфейсов.
Когда кидаете компонент IDE сама их добавляет.
2 ноя 18, 12:02    [21722372]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
Dmitry Arefiev, я так пробовал в самом начале и у мня была ошибка при выполнении запроса, видимо затупил. Попробую еще раз
2 ноя 18, 12:08    [21722381]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
mr.cardholder
Member

Откуда:
Сообщений: 61
Вопрос по использованию параметра типа record в вызове хранимой процедуры в oracle 12 и выше.
При вызове/prepare такой процедуры имеем ORA-24328: illegal attribute value.
В oracle 11 такой проблемы нет, проверял в delphi 10.2.
В чем может быть дело? Куда копать?
2 ноя 18, 14:46    [21722556]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
mr.cardholder

Нужно тестовое приложение + PLSQL скрипт.
2 ноя 18, 14:55    [21722569]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
mr.cardholder
Member

Откуда:
Сообщений: 61
Dmitry Arefiev,

от версии ораклового клиента не зависит, воспроизводится как на 11.2.0.4 так и на 12.2.0.0

К сообщению приложен файл (testrec.zip - 2Kb) cкачать
2 ноя 18, 15:16    [21722593]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
Похоже было исправлено - не воспроизводится.
2 ноя 18, 15:40    [21722621]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
mr.cardholder
Member

Откуда:
Сообщений: 61
Dmitry Arefiev,

в delphi 10.3?
2 ноя 18, 16:08    [21722648]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
Dmitry Arefiev, спасибо
2 ноя 18, 17:24    [21722700]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
А это нормально, когда я таким образом заполнил массив, выполнил запрос, очистил запрос (Freeandnil(FDQuery)), а память осталась выделена (в диспетчере задач)? Я так позаписывал в бд немного, а у меня уже 1 ГБ в памяти лишний
2 ноя 18, 17:50    [21722720]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
cptngrb, память выделяется один раз на каждый экземпляр Query и дальше не растет. сори
6 ноя 18, 09:15    [21724859]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
Dmitry Arefiev,

for i:=0 to ASize-1 do
FDQuery.Params[0].Values[i]:= arrVariant[i];


и

FDQuery.ParamByName('Par').Value:= arrVariant;


в исходниках

procedure TFDParam.SetAsVariants(AIndex: Integer; const AValue: Variant);
var
  tp: TVarType;
  i: Integer;
begin
....

else if (ArrayType = atTable) and (tp and varArray = varArray) and (AIndex = 0) then
    for i := 0 to Min(ArraySize - 1, VarArrayHighBound(AValue, 1)) do
      SetAsVariants(i, AValue[i])


это же одно и тоже.
Я имел ввиду что-то вроде copy
6 ноя 18, 09:29    [21724867]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Mironico
Member

Откуда: Оттуда
Сообщений: 179
Добрый день!
Подскажите пожалуйста что делаю не так.
В одной из функций использую FDQuery с запросом типа:
select count(*) as cnt 
from goods where
goods.goods_id = :par; 

Вроде-бы все просто.
Но время от времени вылазит Ексепшн:
"Cannot open / define command, which does not return result sets.
Hint: use Execute / ExecSql method for non-select commands".

Чего оно хочет если юзается только "select" который в любом случае
должен вернуть результат?

СУБД PostgreSQL 9.6.2.
RAD Studio 10.2.2.
7 ноя 18, 15:32    [21726980]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 223
Mironico, текст запроса точно не меняется?
7 ноя 18, 16:54    [21727119]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Mironico
Member

Откуда: Оттуда
Сообщений: 179
Неа, точно не меняется.
Уже 2й день долбусь.

Это служба работающая на 115-ти торговых точках.
А эта проблема возникает только на нескольких
причем в основном работает нормально но иногда
кидает такое.
7 ноя 18, 17:13    [21727160]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2592
Mironico
Добрый день!
Подскажите пожалуйста что делаю не так.
В одной из функций использую FDQuery с запросом типа:
select count(*) as cnt 
from goods where
goods.goods_id = :par; 

Вроде-бы все просто.
Но время от времени вылазит Ексепшн:
"Cannot open / define command, which does not return result sets.
Hint: use Execute / ExecSql method for non-select commands".

Чего оно хочет если юзается только "select" который в любом случае
должен вернуть результат?

СУБД PostgreSQL 9.6.2.
RAD Studio 10.2.2.


как же тебе подсказать если ты код не показываешь
7 ноя 18, 17:15    [21727162]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
Mironico
Это служба работающая на 115-ти торговых точках.

Mironico
А эта проблема возникает только на нескольких

Как это что-то поясняет ?

Возможно один и тот же FDQuery используется несколькими потоками одновременно.
Возможно какой-то код меняет FDQuery.SQL на не-SELECT.
Оба варианта могут быть неожиданными багами, а не чем-то сознательным.
7 ноя 18, 22:55    [21727501]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Mironico
Member

Откуда: Оттуда
Сообщений: 179
Вот не знаю что я такого сделал но проблема ушла.
Всем спасибо.
8 ноя 18, 11:55    [21727957]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1928
Mironico
Вот не знаю что я такого сделал но проблема ушла
Казалось бы причем тут VCS?...
8 ноя 18, 11:57    [21727960]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Страдалецъ
Member

Откуда: Мурманск
Сообщений: 1337
Ситуация несколько непонятная. Имеется проект в стадии разработки. Пару недель назад проект у клиента прекрасно работал, сегодня обновил версию базы на MSQSQL и обновил версию самого клиента и клиент перестал работать.
Поиск причины дал очень странный результат - перестали корректно работать FDTable. Коннект к базе проходит без проблем, FDQuery выполняются без проблем, а FDTable дружно перестали подключаться если указать в качестве таблицы для FDTable вьюшку. Обращение напрямую к физической таблице в базе проходит нормально, а вот любая вьюшка вызывает ошибку. При этом на сервере все нормально открывается и работает. Текст ошибки точный не помню, но смысл в том, что вьюшка уже занята.
Т.к. ошибка происходит и с пустым проектом, то видимо это какой-то косяк MSSQL после восстановления БД и скорее всего на что-то не хватает прав. Может кто сталкивался с таким или пнете в нужном направлении.
10 ноя 18, 13:28    [21730400]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Hi All,

Delphi 10.2.3, БД на Sybase SQL Anywhere 12.0.1, сама база и данные в ней в кодировки 1251.

Windows 10 Pro (1803) -> настройки системы (параметры) -> Время и язык -> Дополнительные параметры даты и времени, региональные параметры -> региональные стандарты -> в окне "Регион" закладка "Дополнительно".
Раздел "язык программ не поддерживающих юникод".
Текущий язык программ не поддерживающих юникод - Русский (Россия).
Жмем кнопку "Изменить язык системы". В открывшемся окне "Региональные стандарты" жмем опцию (CheckBox) "Бета-версия. Использовать Юникод (UTF-8) для поддержки языка во всем мире".
Перегружаем винду.

Запускаю программу, которая используя FireDAC соединяется с сервером и показывает оттуда данные в гриде.
Так вот, в случае включения описанной выше опции, все данные из бд показываются в виде ромбиков и иероглифов. Если эту опцию отключить, то все показывается нормально.

Если эту же программу запустить с использованием библиотеки БД SQL Direct (никаких языковых параметров я ей не задаю), то в обоих случаях все нормально.

Это строка соединения с БД для обоих программ:
commlinks=tcpip{Host=xxx.xxx.xxx.xxx;ServerPort=xxxx;DoBroadCast=No;Timeout=50};Compress=Yes;Encryption=Simple;

Пробовал добавить в нее еще параметр CharSet=windows-1251, но это для FireDAC не помогло.

Вопрос: Это ошибка FD или ему надо задать еще какой то параметр для языка БД (может он его определяет в случае этой опции некорретно) или еще что то ?
11 ноя 18, 15:32    [21731028]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Страдалецъ
Member

Откуда: Мурманск
Сообщений: 1337
Так ведь для корректного отображения юникодных данных, надо ведь и сами данные в юникоде хранить, а у вас кодировка бд 1251. От включения поддержки на клиенте юникода, данные сами себя на сервере не конвертируют. Включив поддержку, вы просто получите возможность сохранить новые данные в юникоде, да и то при условии, что типы текстовых полей в базе имеют такую возможность.
11 ноя 18, 19:18    [21731151]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 38 39 40 [41] 42   вперед  Ctrl
Все форумы / Delphi Ответить