На чем написать программу?
От: Roman Odaisky Украина  
Дата: 21.02.08 11:59
Оценка:
Hi All,

Нужно написать программу для работы с БД. Типичных use cases только четыре: добавление записи, правка записи, поиск записи по критериям, создание отчета (в формате OOo) по некоторому набору записей. Записей будет совсем немного, в пределах сотни, зато у каждой будет много полей.

Собственно, записи — это недвижимость. БД будет собирать данные из разных источников, нужно уметь обновлять данные (например, цены изменились, или был сделан ремонт, или еще что-нибудь), нужно проверять данные на предмет того, вдруг они уже были вставлены в БД из других источников.

Самое главное — usability. Сейчас это делается вручную в MS Excel, я эту книгу видел, очень неудобно. Нужно сделать простой, удобный и красивый интерфейс.

Требование заказчика — чтобы он мог сам переделывать интерфейс. Какие средства разработки позволяют проще всего этого достичь?

Варианты, которые я нашел:

· OOo Base. Предназначена для программ такого рода, интерфейс вроде тоже переделывается. Но что-то там многого не хватает, в сравнении с той же MS Access. Или не там ищу?
· HTMLayout. Здесь вроде с интерфейсом просто, да и заказчик хорошо владеет HTML/CSS. Но зато придется самому ручками делать взаимодействие с БД. И MS Windows only.
· Qt. Умеет динамически грузить .ui-файлы. GPL — не проблема. Но всё равно придется писать работу с БД.
· Что-нибудь на XForms. Сам пока еще не разобрался, но выглядит перспективно.

На чем нынче делают такое? Платформа заказчика — MS Windows, но кроссплатформенные решения — это, конечно, плюс. Еще раз: БД очень простая, но нужно сделать хороший интерфейс.
До последнего не верил в пирамиду Лебедева.
Re: На чем написать программу?
От: ArtDenis Россия  
Дата: 21.02.08 15:38
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Hi All,

RO>Нужно написать программу для работы с БД

А чем не устраивает простой web-интерфейс?
... << RSDN@Home 1.1.4 stable rev. 510>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: На чем написать программу?
От: Roman Odaisky Украина  
Дата: 21.02.08 15:51
Оценка:
Здравствуйте, ArtDenis, Вы писали:

RO>>Нужно написать программу для работы с БД


AD>А чем не устраивает простой web-интерфейс?


Во-первых, десктопные программы еще долго будут удобнее вебморд: разнообразие элементов управления, нулевое время отклика.

А во-вторых, там трафика многовато, картинки нужны и т. п.
До последнего не верил в пирамиду Лебедева.
Re: На чем написать программу?
От: Cyberax Марс  
Дата: 21.02.08 15:54
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>На чем нынче делают такое? Платформа заказчика — MS Windows, но кроссплатформенные решения — это, конечно, плюс. Еще раз: БД очень простая, но нужно сделать хороший интерфейс.

Бери MS Access + MSSQL. Я серьёзно.

Если требуется, чтобы заказчик мог что-то менять — то Access тут впереди планеты всей.
Sapienti sat!
Re[3]: На чем написать программу?
От: ArtDenis Россия  
Дата: 21.02.08 16:12
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Во-первых, десктопные программы еще долго будут удобнее вебморд: разнообразие элементов управления,

Да в принципе, сейчас это не проблема.

RO>...нулевое время отклика.

Всё зависит от прямизны рук программиста и скорости клиентского компа

RO>А во-вторых, там трафика многовато, картинки нужны и т. п.

Многовато — это сколько? И какие картинки надо отображать?
... << RSDN@Home 1.1.4 stable rev. 510>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: На чем написать программу?
От: ArtDenis Россия  
Дата: 21.02.08 16:23
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Во-первых, десктопные программы еще долго будут удобнее вебморд: разнообразие элементов управления, нулевое время отклика.


Последняя веб-морда, с которой я сталкивался — это был интерфейс управления для клиента uTorrent. На мой взягляд — очень достойно. Вот пара скриншотов:

Картинка №1
Картинка №2
... << RSDN@Home 1.1.4 stable rev. 510>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re: На чем написать программу?
От: Константин Л.  
Дата: 21.02.08 17:32
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

java + postgre + ajax
Re: На чем написать программу?
От: sss1024 http://microforms.mobile-mir.com/
Дата: 21.02.08 19:20
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Hi All,


RO>Нужно написать программу для работы с БД. Типичных use cases только четыре: добавление записи, правка записи, поиск записи по критериям, создание отчета (в формате OOo) по некоторому набору записей. Записей будет совсем немного, в пределах сотни, зато у каждой будет много полей.




вобщем-то неважно на чём, если есть гуёвщик то он сделает хоть на дельфи.

Типа как реклама предлагаю жавафх, пример подобного решения
http://molgav.nn.ru/index.php?option=com_content&amp;view=article&amp;id=45%3A--javafx&amp;Itemid=53

картинки всяко красивей чем те что уже привели
Re: На чем написать программу?
От: linker Россия  
Дата: 28.02.08 08:05
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

Delphi или WinForms, но имхо delphi для такой задачи в самый раз.
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re: На чем написать программу?
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 28.02.08 12:20
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Требование заказчика — чтобы он мог сам переделывать интерфейс. Какие средства разработки позволяют проще всего этого достичь?


Меня сейчас наверное побьют каменьями, но я бы сказал — VBA. MS Office у человека уже есть, значит и VBA есть, делать формы там можно, освоить легко.

Что же касается юзабилити — то к вопросу выбора инструментария оно вообще отношения не имеет.
Re: На чем написать программу?
От: c-smile Канада http://terrainformatica.com
Дата: 28.02.08 17:12
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>· HTMLayout. Здесь вроде с интерфейсом просто, да и заказчик хорошо владеет HTML/CSS. Но зато придется самому ручками делать взаимодействие с БД. И MS Windows only.

...
RO>На чем нынче делают такое? Платформа заказчика — MS Windows, но кроссплатформенные решения — это, конечно, плюс. Еще раз: БД очень простая, но нужно сделать хороший интерфейс.

Sciter. Ибо это такой htmlayout со встроенным скриптом и базой данных.
Плюс Sciter умеет сам себе быть веб сервером — обрабатывать templates:
<% for(var rec in records) { %>
  <td><%=rec.value%></td>
<% } %>
Re[2]: Simple DB form
От: c-smile Канада http://terrainformatica.com
Дата: 28.02.08 21:18
Оценка:
Вот набросал пример простой формы для редактирования записей в DB.

Тир поля: numeric, text (single line) и richtext (html)



Этот пример состоит из трех файлов: simple-db-form.htm — это то что загружеается в sciter и
два скрита form.tis и db.tis. Привожу их полностью:

simple-db-form.htm:
<html>
<head>
  <style>
    form#record 
    { 
      border:1px solid; prototype:Form; 
      width:*; height:*; 
      padding:6px; margin:10px;
      background-color: white white cornsilk cornsilk;
    }
    form#record > table { width:*; height:*; }
    form#record > table > tr:nth-child(3) { height:*; }
    form#record > table td { vertical-align:top; }
    form#record > table td:nth-child(1) { text-align:right; }
    form#record richtext { width:*; height:*; }
  </style>  
  <script type="text/tiscript">
    include "form.tis";
    include "db.tis";
    
    var form = self.select("form#record");
    var rec_no = self.select("#rec-no");
    
    var db = openDatabase();
    var no = 0;
    
    function gotoRecNo( n )
    {
      no = n;
      if( no < 0 ) no = 0;
      if( no >= db.root.records.length ) no = db.root.records.length - 1;
      form.show( db.root.records[no] );
      rec_no.text = String.printf("%d of %d", no, db.root.records.length);
      rec_no.update();
    }
    
    function self #first .onClick() { gotoRecNo(0); }
    function self #prev  .onClick() { gotoRecNo(no - 1); }
    function self #next  .onClick() { gotoRecNo(no + 1); }
    function self #last  .onClick() { gotoRecNo(db.root.records.length - 1); }

    function gotoNewRecord() 
    { 
      // create new record
      db.root.records[ db.root.records.length ] = { first:0, second:"", third:"<html><\/html>" };
      gotoRecNo(db.root.records.length - 1); 
    }
    
    function self #new  .onClick() 
    { 
      gotoNewRecord();
    }
    
    function view.onLoad()
    {
      if(db.root.records.length) 
        gotoRecNo(0);
      else
        gotoNewRecord();
    }
    function view.onUnload()
    {
      form.save();
      db.close();
    }
    
  </script>  
<head>
<body>
  <h1>Simple DB form</h1>
  <form #record>
    <table>  
      <tr><td>First (number)</td><td><input name="first" type="number"/></td></tr>
      <tr><td>Second (text)</td><td><input name="second" type="text"/></td></tr>
      <tr><td>Third (richtext(html))</td><td><richtext name="third" /></td></tr>
    </table>
  </form>
  <div #nav>
    <button #first title="to first record">|&lt;</button>
    <button #prev title="to prev record">&lt;</button>
    <button #next title="to next record">&gt;</button>
    <button #last title="to last record">&gt;|</button>
    <button #new title="create new record">new</button>
    record: <span #rec-no>?</span>
  </div>
</body>
</html>


Файл form.tis — behavior формы с полями ввода/отображения:
Фактически набор input полей в форме определяет набор полей в записи db.
// Form handler class
type Form: Behavior
{
  function show(rec)
  {
    if(this.shown) this.save(); // save previously shown record.
    this.shown = rec;
    function load_value(el)
    {
      var name = el.attributes#name;
      el.value = rec[symbol(name)];
    }
    this.select(load_value, "[name]"); 
    // call load_value for each element having "name" defined.
    // De facto this means that form content defines structure of the record.
  }
  function save()
  {
    var shown = this.shown;
    function store_value(el)
    {
      var name = el.attributes#name;
      shown[symbol(name)] = el.value;
    }
    this.select(store_value, "[name]"); 
    // call store_value for each element having "name" defined.
  }
}


И db.tis — открытие и инициализация DB (если нужно)

function openDatabase(pathname = "records.db")
{
  var ndb = Storage.open(pathname);
  if(!ndb.root)
  { 
    // new db, initialize structure
    ndb.root = 
      { // root of our db is an object having single field 'records'
        records: ndb.createIndex(#integer) // main index, int -> item
      };
  }
  return ndb;
}


Вот и все. Извиняюсь за длиный пост.
Re[2]: На чем написать программу?
От: swame  
Дата: 29.02.08 10:09
Оценка:
CS>Sciter. Ибо это такой htmlayout со встроенным скриптом и базой данных.
CS>Плюс Sciter умеет сам себе быть веб сервером — обрабатывать templates:

А есть ли способ вставить окно со Sciter в приложение Delphi ?
(К топику не относится)
Re[3]: На чем написать программу?
От: c-smile Канада http://terrainformatica.com
Дата: 29.02.08 17:36
Оценка:
Здравствуйте, swame, Вы писали:

S>А есть ли способ вставить окно со Sciter в приложение Delphi ?


Если Delphi сможет вызвать:
::CreateWindow( SciterClassNameA/SciterClassNameW )
то да.
Re[2]: На чем написать программу?
От: kolam http://www.linkedin.com/in/kolam
Дата: 06.03.08 16:24
Оценка:
КЛ>java + postgre + ajax

Непатриотично это, Костя. Надо было XUL предлагать
Re[3]: На чем написать программу?
От: Константин Л.  
Дата: 07.03.08 11:51
Оценка:
Здравствуйте, kolam, Вы писали:

КЛ>>java + postgre + ajax


K>Непатриотично это, Костя. Надо было XUL предлагать


Паша, ну пусть хоть кто-то будет счастлив
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.