Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » NexusDB

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

DrMzi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь использовал сабж в реальных проэктах?
Поделитесь впечатлениями плииз.
 
Добавлено:
имеется ввиду версия клиент/сервер V2

Всего записей: 8 | Зарегистр. 20-02-2008 | Отправлено: 19:58 21-03-2008
dmka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DrMzi
А зачем использовать это дельфийское чудо в реальных проектах, если есть MS SQL Express с одной стороны и SQLite с другой, даже не считая всяких интербейсов с их клонами?

Всего записей: 947 | Зарегистр. 23-04-2003 | Отправлено: 15:12 23-03-2008
DrMzi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вроде удобное, есть родные компоненты ...

Всего записей: 8 | Зарегистр. 20-02-2008 | Отправлено: 17:07 23-03-2008
dmka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет, ну я понимаю, что каждому дельфинисту близка идея переписать все (в данном случае SQL-сервер) на дельфи, только деньги заказчиков "реальных проектов" тут причем?

Всего записей: 947 | Зарегистр. 23-04-2003 | Отправлено: 16:32 24-03-2008
DrMzi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
опробовал данное чудо-творение, пока понравилось, на гигабайтной базе в почти мильйон записей не тормозит, красивенько так работает, и реализовывается всё просто

Всего записей: 8 | Зарегистр. 20-02-2008 | Отправлено: 21:59 24-03-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А это для Клиент\Сервера Бд?


----------
Честь превыше всего!
Верность превыше чести!

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 09:03 25-04-2008
DrMzi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да

Всего записей: 8 | Зарегистр. 20-02-2008 | Отправлено: 19:11 28-04-2008
Hmmmm



сто лет одиночества
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!
 
Попробовал перевести проект на nexusdb 3
 
Столкнулся со следующей проблемой, в отличие от Absolute Database:
 

Цитата:
 
//NAME String
//IVID Integer (обязательное)
//DATESTART DATE
//M1 Integer (необязательное)
 
//SQL для Absolute Database
with dm.q_spr do
                              begin
                                Active := False;
                                SQL.Clear;
                                SQL.Add('INSERT INTO SER (NAME,IVID,DATESTART,M1)');  
                                SQL.Add('VALUES (' + QuotedStr(Trim(ed_name.Text)));
                                SQL.Add(',' + QuotedStr(cb_iv.Text));
                                SQL.Add(',' + QuotedStr(DateToStr(d_start.Date)));
                                SQL.Add(',' + QuotedStr(ed_m1.Text)+')');
                                ExecSQL;
                                end;
 
//SQL для nexusdb
with dm.q_spr do
                              begin
                                Active := False;
                                SQL.Clear;
                                if  ed_m1.Text = '' then  
                                SQL.Add('INSERT INTO SER (NAME,IVID,DATESTART)') else
                                SQL.Add('INSERT INTO SER (NAME,IVID,DATESTART,M1)');
                                SQL.Add('VALUES (' + QuotedStr(Trim(ed_name.Text)));
                                SQL.Add(',' + QuotedStr(cb_iv.Text));
                                SQL.Add(',DATESTART = DATE'+QuotedStr(FormatDateTime('YYYY-MM-DD',d_start.Date)));
                                if  ed_m1.Text <> '' then              
                                SQL.Add(',' + QuotedStr(ed_m1.Text)+')') else
                                SQL.Add(')');
                                ExecSQL;
                                end;
 
Как видно, всё усложнилось, с датой вообще никак по другому не получилось
 

 
PS: Прошу не советовать 0 вместо Null, спасибо. Может в SQL есть вариант для INSERT/UPDATE как для SELECT : <CASE WHEN M1=0 THEN NULL ELSE M1 END>

----------
Умер Габриэль Гарсия Маркес, мой кумир, волшебник описания чувств и мыслей

Всего записей: 4683 | Зарегистр. 24-03-2002 | Отправлено: 09:04 30-01-2016 | Исправлено: Hmmmm, 09:57 30-01-2016
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hmmmm
А в чём проблема то?
Подобные вещи лучше через параметры делать.
case по идее должен в любом месте работать.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 03:34 31-01-2016
Hmmmm



сто лет одиночества
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy
 
Через параметры Null не передается.

Всего записей: 4683 | Зарегистр. 24-03-2002 | Отправлено: 09:01 31-01-2016 | Исправлено: Hmmmm, 14:43 31-01-2016
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Через параметры Null не передается.  

Странно, у меня всегда передавалось...

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 21:38 31-01-2016
Hmmmm



сто лет одиночества
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nexusdb v3
 

Цитата:
      with dm.q_spr do
              begin
                Active := False;
                SQL.Clear;
                SQL.Add('UPDATE AVTO SET');
                SQL.Add('NAME =  :Test');
                SQL.Add('WHERE ID = ' + ed_id.Text);
                ParamByName('Test').Value := Null;
                ExecSQL;
              end;
 

 
Ответ движка:
 

Цитата:
q_spr: Field 'Test' is of an unknown type  

 
Я так понимаю, что к variant тип Null не относится.
 
Как вы передаете?
 

Всего записей: 4683 | Зарегистр. 24-03-2002 | Отправлено: 08:49 01-02-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DrMzi
зачем использовать какие-то креки, когда есть прекрасный мормот с коннектом к куче баз, опенсоурц и очень производительный.
http://synopse.info/forum/viewforum.php?id=2

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 10:30 01-02-2016
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror,
вряд ли DrMzi, ещё склонен об этом дискутировать. Всё-таки, почти восемь лет прошло...
 

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 11:40 01-02-2016
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ответ движка

Какой движок то? FireDAC?
 

Цитата:
q_spr: Field 'Test' is of an unknown type  

Нужно у параметра DataType выставить.
 

Цитата:
Я так понимаю, что к variant тип Null не относится.  

В Delphi Null это функция, которая возвращает вариант с типом varNull. Движок его обрабатывает как NULL.
 

Цитата:
Как вы передаете?

Так и передаю. В BDE есть еще метод Clear, в FireDAC не знаю.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 12:34 01-02-2016
Hmmmm



сто лет одиночества
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Какой движок то? FireDAC?  

 
Я ж написал вначале предыдущего поста
 

Цитата:
nexusdb v3  

 
тема вроде про него
 

Цитата:
Нужно у параметра DataType выставить.

 
Нет там такого типа!
 
Из вариантных только ftVariant, он по-умолчанию и парсит.

Всего записей: 4683 | Зарегистр. 24-03-2002 | Отправлено: 14:57 01-02-2016
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hmmmm
Вы с терминами как-нибудь определитесь.
nexusdb v3 - это СУБД, которую можно назвать движком.
 

Цитата:
Ответ движка: q_spr: Field 'Test' is of an unknown type

Это ответ компонентов доступа к данным, которые тоже можно назвать движком, FireDAC например.
 
Какие компоненты используете так и не написали.
 

Цитата:
Нет там такого типа!

Какого такого?
DataType должен соответствовать типу поля NAME таблицы AVTO
Так наверное ParamByName('Test').DataType := ftString;
Да и другие свойства параметра надо бы устанавливать - Size для строк, ParamType...

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 15:57 01-02-2016 | Исправлено: Alexzzy, 15:59 01-02-2016
Hmmmm



сто лет одиночества
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy
 

Цитата:
Какие компоненты используете так и не написали.  

 
nexusdb v3 Это СУБД c нативными компонентами доступа под Delphi от разраба. Она идет вместе с ними. Никакие сторонние компоненты мной не используются для доступа к базе.
 

Цитата:
 
 Так наверное ParamByName('Test').DataType := ftString;  

 
 
Я писал в первом посте, что поле integer.  
 
 

Цитата:
//M1 Integer (необязательное)  

 
Оно обрабатывается нормально, но если оно равно Null, то
 

Цитата:

Цитата:
Ответ движка: q_spr: Field 'Test' is of an unknown type  

 
Поэтому здесь ParamByName('Test').DataType изменить нельзя, т.к. тогда нормальный integer не будет обрабатываться. Да и не даст компилятор поменять тип на другой. Поэтому я указал универсальный ParamByName('Test').Value
 

Всего записей: 4683 | Зарегистр. 24-03-2002 | Отправлено: 16:53 01-02-2016 | Исправлено: Hmmmm, 16:56 01-02-2016
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hmmmm
Я же вроде ясно написал, что ParamByName('Test').DataType := ftString; это для последнего примера. Если поле Integer - ставьте ftInteger.
 
Еще раз, q_spr: Field 'Test' is of an unknown type скорее всего из-за того, что у параметра не установлен DataType, т.е. DataType = ftUnknown.
 

Цитата:
Поэтому здесь ParamByName('Test').DataType изменить нельзя, т.к. тогда нормальный integer не будет обрабатываться. Да и не даст компилятор поменять тип на другой. Поэтому я указал универсальный ParamByName('Test').Value  

Всё написанное не вяжется между собой. Или Вы не понимаете что делаете или эти компоненты какие то ОЧЕНЬ особенные и я не понимаю. C nexusdb не работал.
Вот еще один пример, про то что я говорю

Код:
 
ParamByName('M1').DataType := ftUnknown;
ParamByName('M1').Value := 1; // в БД пойдет 1
ParamByName('M1').Value := Null; // Field 'M1' is of an unknown type
 
ParamByName('M1').DataType := ftInteger;
ParamByName('M1').Value := 1; // в БД пойдет 1
ParamByName('M1').Value := Null; // в БД пойдет NULL
 


Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 21:50 01-02-2016 | Исправлено: Alexzzy, 21:55 01-02-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » NexusDB


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru