51

(27 replies, posted in Russian)

У меня одиночная лицензия . Установлена на 3 х разработческих компах( 2 в домашней лаб. и один в офис) . Работаю я один , под мое честное слово Дмитрию !

52

(28 replies, posted in Russian)

Спасибо !
Извините , мог бы и сам догадаться

53

(28 replies, posted in Russian)

Добрый день !
Попробовал из нового :

Form1.TableGrid1.dbLimit := 1000;


Работает здорово . Но если бы появилась возможность выводить не первую 1000 , а последнюю

Добрый вечер!
DriveSoft пишет :


Чтобы не было проблем с разными версиями программы в локальной сети, можно программу запускать непосредственно из расшаренной папки, таким образом все будут работать с одной и той же копией программы.


Подтверждаю . Именно так работает мой проект уже 5 мес.
На компе каждого пользователя  завел ярлыки на  ЕХЕ  в расшаренной  папке . У каждого пользователя свой парольный доступ
к своему разделу ( кнопке на form1 ) . Если сеть по скорости выше 50 мбит , то вы даже не заметите разницы в загрузке . А вот для себя
( для администрирования ) настроил openVPN , заменил прот.tcp на udp ( он меньше гоняет заголовки )  и получил свою VPN сеть.
Новую версию просто копирую на сервер (С ЗАМЕНОЙ СТАРОЙ ) , и даже не прошу пользователей закрыть программу. Сам свою прогу запускаю у себя на компе , тк  все таки это не локалка и долго будет запускаться .
Недостаток пожалуй один : проект получается большой , разделять на 2 или 3 уже и не хочется . Но программа Дмитрия пока надежно терпит
мои  62 формы .

Добрый вечер!
Решил поделиться небольшим опытом .
Тоже работаю по локаль. сети(5 пользователей) . База тяжелая (35-40 таблиц). Сам к серверу на удаленке( ping до сервера 17 мс).
База была 23 мб . Вынес  фотки - теперь 1,65 мб . Проблем пока нет (фу,фу,фу).Предполагал , что упрусь в скорость , поэтому оптимизировал скрипты с запросами SQL . Первое :  выяснил , что прямой SELECT в переменную работает гораздо быстрее чем внутри INSERT или
UPDATE  .
Т. е.  вот такое работает гораздо быстрее  :


     begin
     id_Mater := SQLExecute('SELECT id_Materials FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) ); // читаем идентификатор родительской таблицы
      Nom := SQLExecute('SELECT NomNak FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
       NakDat := SQLExecute('SELECT DataNak FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
        Otkud := SQLExecute('SELECT Kuda FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
         Kud := SQLExecute('SELECT Otkuda FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
          Vozvr := StrToFloat(SQLExecute('SELECT Vozvrat FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID)));
           VozNet := SQLExecute('SELECT OtchZaPriz FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
            ZaN := SQLExecute('SELECT NomerZayav FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
             ZaDat := SQLExecute('SELECT DataZayav FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );

  SQLExecute('INSERT INTO Nakladnie (Nomer,NakData,Otkuda,Kuda,Vozvrat,VozvrNet,id_Materials,ZayavNom,ZayavData) VALUES ("'+Nom+'","'+NakDat+'","'+Otkud+'","'+Kud+'",'+ReplaceStr( FloatToStr(Vozvr),',','.')+',"'+VozNet+'",'+IntToStr(id_Mater)+',"'+ZaN+'","'+ZaDat+'")');
    end;


чем например такое :

SQLExecute('INSERT INTO AktBrakMat (NomAkt, DataAkt, KolMat, id_Materials, NomNak, DataNak, KolichVnakl) SELECT MatZayav2.NomNast,MatZayav2.ZakroyDataFakt,MatZayav2.BrakPolot,MatZayav2.id_Materials,MatZayav2.NomNak,MatZayav2.DataNak,MatZayav2.MaterKolFakt FROM MatZayav2 WHERE MatZayav2.id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID));

да и вероятность нарваться на locked  уменьшается .
Если я не очень понятно , то пишите , раскрою измерения подробней.

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

56

(4 replies, posted in Russian)

Уже попробовал ! Здорово ! Спасибо !

57

(24 replies, posted in Russian)

Добрый день !
Заметил ошибку в последней бета 1,48 , ( ссылка на нее в этой теме выше).
В гридах идет неправильное отображение чисел типа REAL .

58

(15 replies, posted in Russian)

Добрый день !

"Попробуйте пожалуйста добавить это frmTovar.Show;" -- это не помогло . Но в процессе
тестирования определил следующее :

Этот эффект возникает только тогда , когда мой проект запускается под MVDB , т. е .
сразу после компиляции . Когда идет запуск моего EXE - ка вне среды  MVDB ---- все проходит правильно .
Думаю это связано с особенностями перегрузки памяти . Проект обьемный . Я не думаю , что тут какая то
Ваша проблема .

59

(15 replies, posted in Russian)

В 1,47  с данной .dll  не работают скрипты . Все остальное работает . ( пробовал)

Скриншот не поможет .  Я пробую пояснить по другому :   запускаю программу --- открывается Form1,
на этой форме есть кнопка -- показать форму --- открывается Form2 , с Form2  открывается  Form3.
На Form3( это frmTovar)  TableGrid2 и DBImage1. Кликаю запись в TableGrid2 и жду , когда в  DBImage1
появится изображение ( т.е. выполняется   frmTovar.DBImage1.LoadFromDatabase('Shirina', 'RaskladFoto', frmTovar.TableGrid2.dbItemID);)
В зависимости от скорости инета длится это 4-5 сек. . На курсоре часики крутит . Как загрузка кончилась, на мониторе картинка едва
заметно моргнула и   Form2 оказывается верхней , (т.е. перекрывает Form3), но  Form2 не активна ( кликай по ней где хочешь - не реагирует)
Из под  Form2 виден небольшой фрагмент  Form3 . Я по этому фрагменту кликаю , и  Form3 стала на верхний слой , те в правильное положение
Вот такой эффект , но только когда на удаленке . Когда все на одном компе или в локалке , то скорость передачи большая и такого эффекта
не наблюдается.

Про  CopyTo : именно это я и имел ввиду (файл будет переименован в "имя_файла(1)"), --- записи С одинаковым файлом в БД имеют ссылки
не на один файл  , а каждый на свой дубликат .. Поэтому при удалении записи можно удалить и файл .

Простите за эпистолярный жанр , но мне кажется Вам интересны эти нюансы .

60

(15 replies, posted in Russian)

Спасибо !
Все работает .
Т.к. я работал по удаленке , то фотка грузится примерно 4 сек (220 Кб).
По выходу из загрузки перекидывает открытые  формы , и сверху оказывается
неактивная форма . Приходится шлепать по активной , что бы стала верхней .
Есть ли возможность по выходу из этой процедуры активную форму заставить стать верхней ?

procedure frmTovar_TableGrid2_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
      frmTovar.DBImage1.Clear;
    frmTovar.DBImage1.LoadFromDatabase('Shirina', 'RaskladFoto', frmTovar.TableGrid2.dbItemID);
  ??  frmTovar  ???
end;

И еще ---- :  Когда вынес фотки в папку , база соответственно уменьшилась с 22 Мб  до 1.5 Мб , и соответственно
пока не было ошибок  DataBase locked .  8 го проведу более серьезные тесты ( одновременная работа 3х локальных и 2х удаленных
пользователей . О результатах сообщу .

Поэтому режим  LinkFile важная и очень полезная штука . Хотя в дальнейшем хотелось бы иметь возможность автоудаления файла
из папки при удалении записи , т.к  CopyTo все равно дублирует одинаковые по имени файлы .

61

(15 replies, posted in Russian)

Простите ради Бога !!!
Сразу не понял , КАКОЙ  ВАРИАНТ .  Вроде работает .
Чуть позже сообщу о полном тестировании .

62

(15 replies, posted in Russian)

Добрый день !
Скачал  builder.dll  в папку с 1.48 бета . В проекте убрал оператор
frmTovar.DBImage1.dbFileName := imgFile;
Ничего не изменилось .
Т.е. :
--  без этого оператора, по клику на DBImage1 не разворачивает просмотр на весь экран
--  При подключении к базе на сервере ( т.е база с папкой фоток не в папке с моим проектом )
выдает ошибку , что не найден  путь к файлу и указывает путь к папке моего проекта

63

(15 replies, posted in Russian)

Не знаю как добавить к imgFile путь расположения  файла базы !

64

(15 replies, posted in Russian)

Еще одна проблемка .
Когда все в одной папке - все ок.
Перенес на сервер файл базы и папку с файлами - запись проходит правильно(на форме сохранения записи ), а также при редактировании
записи показывает сохраненное изображение . А вот в режиме показа по клику сообщает , что не может найти файл , и ссылается на путь к папке где расположен ЕХЕ файл программы . В таблицу БД   _filename прописывает правильно ( проверял :  \photo\ 0123.jpg ).

65

(15 replies, posted in Russian)

Добрый день !
Спасибо , файл находит , но по клику по DBImage1 не переходит на просмотр ( на весь экран ). Активен
только значек загрузки изображения .

Добрый день !
Убрал все изображения из базы .
Подскажите пожалуйста как вывести изображение теперь по клику записи в гриде ?
Из базы было так :

procedure frmTovar_TableGrid2_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
      frmTovar.DBImage1.Clear;
    frmTovar.DBImage1.LoadFromDatabase('Shirina', 'RaskladFoto', frmTovar.TableGrid2.dbItemID);
end;

А как по ссылке из файла ?

67

(5 replies, posted in Russian)

Присоединяюсь !

Поздравляю всех участников форума !
Прекрасно провели год в общении одним дружным коллективом !

68

(31 replies, posted in Russian)

С НАСТУПАЮЩИМ !

69

(31 replies, posted in Russian)

Добрый день !
"database is locked" весьма часто возникает при работе в локальной сети.
Прошу совета ! Проект большой , пять пользователей в локалке . DB файл и папка с программой
находятся на локальном сервере(под server 2008) . На пользовательских компах только ярлыки .
Насколько я понимаю ситуацию, эта ошибка возникает при обработке SQL запросов к файлу базы
одновременно от нескольких " задач " . Формирует эту ошибку sqlite.dll и говорит о том , что файл занят
действием другого запроса . Существует ли какой то параметр настройки времени ожидания ответа на запрос
типа "Timeout" ,  увеличив который , можно было бы избежать появление этой ошибки ?
2. Или может оптимальнее расположить проги на пользовательских компах , файл базы на сервере ?

Добрый день !
При многопользовательской работе по сети может возникнуть ошибка Dtb locked или I/O err при выполнении
SQL запросов типа INSERT или UPDATE . При исполнении последовательности таких запросов скриптом,
возникает проблема недоделанного действия . Есть ли какие то возможности объединения последовательности запросов
в базу в одну транзакцию ?

71

(13 replies, posted in Russian)

Мне кажется надо в вашем примере добавить деактивацию таймера при закрытии главной формы :
procedure Form1_OnClose (Sender: string; Action: string);
begin
   
   Timer.Free;
end;

72

(41 replies, posted in Russian)

Добрый день !
А начиная с какой версии вы планируете начать реализовывать это :

- Поддержка клиент-серверной работы программы (используя FireBird)
?

73

(9 replies, posted in Russian)

Подскажите кто может как проверять исключить из проверки год.
Заранее благодарю и  поймите правильно - праздновал денюху - неделю буду притормаживать


Поздравляю с Днем рождения !!!

Уважаемый Дмитрий ! Зачем вы реагируете ?
На форуме большинство понимают что такое труд ...
Кстати , друзья , давайте уже работать . На англоязычном форуме нет никаких обсуждений цены .

75

(41 replies, posted in Russian)

Я за 2 мес выполнил 1/3 проекта по автоматизации производства , и ВНЕДРИЛ . Те кто работал = знают как написать понятный
рабочий стол для пользователя , особенно в глубинке. Скорость , с которой происходит оформление экрана радует и освобождает
время для разработки собственно проекта . Я программист с 30 летним стажем . Больше я занимаюсь встраиваемыми системами
( Ассемблер , т.к мало места и нет ОС ) Естественно С++ и Паскаль , там где можно. А управлять DB начинал с DBase2 и FoxPro,
и нашел себе удобную вещь только сейчас . Мне ненужна избыточность , тк  я в проектах сочетаю много направлений в программировании.
  Кстати за эту 1/3 я уже получил гонорар .
И Дмитрий должен получать гонорар  за хороший проект и обучение форумчан Паскалю и SQL запросам.
Кстати , подскажите я в скриптах могу использовать ассемблерные вставки ?