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

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

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

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

lavren



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dimoniusis
OdesitVadim
А они бесплатны или искать FullSource нужно?

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 11:23 26-05-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lavren
А перейти по ссылке, которую я написал? Там чётко написано, что  с исходниками.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 12:16 26-05-2008
delover

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

Цитата:
У Вас,судя по вопросам, совсем отсутсвуют знания в области БД.

Спасиба за лестное замечание. Мой двадцатилетний стаж в программировании - это далеко не повод считать себя спецом, например в EhLib-ах. Или вы полагаете, что поле SelectedRows относится к знаниям о БД? Смелое заявление.
 

Цитата:
Пример давать не буду - это базовые знания, без них Вы всего остального не поймете и следующий вопрос будет "что такое запросы"

Ладно. Про запросы мне ещё рановато изучать. Под специалиста косить поздно - видимо к рассуждениям о -->
    {$IFDEF SUPPORT_ARRAY_FIELD}
     TFIBArrayField=class(TBytesField)
мы ещё не готовы. Да и суть вопроса я видимо не смог передать. Но ещё надеюсь натолкнуться на ответ специалиста. Вопрос я задавал в теме:
  Вопросы по Ehlib
Всё же интересует, почему ADO интерфейсы от MSSQL работают в десятки раз быстрее чем связка InterBase + FIB + EhLib? Я просто заметил что 2 тысячи выбранных записей в клибоард уходят медленнее, чем создание StringGrid из 1100 тысяч записей из данных ADO? Может быть специалист это когда твоя программа работает медленнее?
 

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 15:33 26-05-2008
lavren



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim
Извени в английском не силен, а там явно не указано!

Всего записей: 545 | Зарегистр. 29-05-2007 | Отправлено: 15:47 26-05-2008
greenpc

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

Давайте не будем разводит оффтопик.  

Цитата:
Или вы полагаете, что поле SelectedRows относится к знаниям о БД? Смелое заявление.  
не будем вырывать ответ из контекста.
Извините если я Вас обидел
Ну теперь по сути
1.
Цитата:
Можно ли написать такую функцию RecNo_To_PrimaryKey: Variant?  

Можно. Вопрос только зачем? Что Вы хотите этим получить?
Подумайте если Вы удалите хоть одну запись(я не считаю последнюю), что произойдет?
Вам прийдется заново переписывать все PrimaryKey и так же во всех связанных таблицах если они есть.  
 

Цитата:
Всё же интересует, почему ADO интерфейсы от MSSQL работают в десятки раз быстрее чем связка InterBase + FIB + EhLib?  
к сожалению повторить это не могу,
т.к. отсутсвует InterBase и работаю с Oracle.
В качестве совета - попробуйте напрямую из датасета получить данные, т.е. без всяких гридов и букмарков
 

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 16:57 26-05-2008
OdesitVadim



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

Цитата:
Я просто заметил что 2 тысячи выбранных записей в клибоард уходят медленнее, чем создание StringGrid из 1100 тысяч записей из данных ADO?

А строку для клипбоарда небось делаем так
s := s + новаязапись  ?
вообще то сравнивем разные вещи. буфер обмена и стринггрид - разные. вот если фраза звучала как  

Цитата:
Я просто заметил что 2 тысячи выбранных записей в клибоард уходят медленнее, чем 1100 тысяч записей из данных ADO в буфер обмена?

тогда можно было бы о чём то говорить.
 
Добавлено:
lavren
Ну не знаю. достаточно было кликнуть по ссылке download, как там надпись

Цитата:
 
This project is freeware and open source under modified BSD style license!
 

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

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 17:10 26-05-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenpc
Извинения приняты. )

Цитата:
В качестве совета - попробуйте напрямую из датасета получить данные, т.е. без всяких гридов и букмарков  

Думаю так и придётся делать, но думаю что качественнее будет вычислимым полем, только в качестве заполнителя будет дубль ID, однако он успеет упасть в элементарный TList, а алигны у листа вполне сносные.
 

Цитата:
Вопрос только зачем? Что Вы хотите этим получить?

Мне нужно только быстрое переваривание мультиселекта в гриде. Ну нажал я Ctrl+A (selectAll), ну отменил с контролом две верхние записи, остальное вырезал и вставил другому parent_id. Точно знаю, что это может работать быстро.
 
Букмарки создаются DB-шным первичным борлановским датасетом и преспокойно могут тащить за собой ID, так как это восьмибайтная строка GridNoToRecNo. При фечоле сортировкой рулит сама гридина. Надо полагать, что для сортировкий ей необходимы все данные, так что накладки на отбор ID и привязывание их к букмарку нисколько не обременило бы проц с двумя гигами для двух тысяч записей. Я полагал что адекватные способы уже имеются...
 
OdesitVadim

Цитата:
А строку для клипбоарда небось делаем так  
s := s + новаязапись  ?  

Раньше так обычно и делал, а в этот раз немного по другому:
s := IntToStr(Id);  if L.IndexOf(s) < 0 then  L.Add(s);
Спасибо, ты натолкнул на мысль, что IndexOf вообще-то лишний. ))))
Без него я не замечаю как 4500 айдишников улетают... Думаю и 50000 улетят так же.
 
Сории вопрос закрыт.
 
 
 
 

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 10:40 27-05-2008
Aladdinych



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть Toolbar помещенный на форму.  
Когда я его помещаю на панель - режим dkDock и использую стандартный DockManager, Toolbar приобретает вид панели с заголовком из двух параллельных черточек и кнопки [X].  
Я хочу чтобы:  
1. Кномпки закрытия вообще не было.  
2. Элемент для буксировки имел другой вид, отличный от стандартного.  
3. Буксировать тоолба можно было за любое место.  
 
Как этого добиться?  
Нужно ли для этого писать свой dockmanager,  
где найти его пример.

Всего записей: 323 | Зарегистр. 18-10-2005 | Отправлено: 14:05 27-05-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
в библиотеке JVCL есть докменеджеры. Там есть подобные Visual Studia и другим продуктам. Попробуй.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 14:48 27-05-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи, интересует вопрос про VssConneXion для Delphi 2007.
Кто-нибудь использует данный эксперт и если да, то использует ли при помощи патча, который можно найти у братьев китайцев или лицензию?
Просто есть проблемы именно с патчем, если его использовать то он вешает дельфю (через разное время), а если юзать триальную (оригинальную) DLL то все в норме. Может это только у меня такие проблемы?

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 17:07 27-05-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
f3ka
Во первых обсуждение "патчей" в соответствующей ветке, а не здесь.
во вторых - разрабочики часто вместо просто вывести сообщение "версия крякнута", делают "мелкие безобидные пакости".

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 18:10 27-05-2008
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
f3ka
Ну неужели так тяжело посмотреть хотя бы на страницу назад, не говоря уже о поиске по версии для печати?

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 19:52 27-05-2008
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanTim огромное спасибо, недоглядел. Уж сильно был расстроен, что не работает нормально VSS.
OdesitVadim а не подскажете ли где тема про патчи? Это типа та тема? Так там тоже не обсуждают... Там только раздают...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 10:46 28-05-2008 | Исправлено: f3ka, 10:50 28-05-2008
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
я еще раз подниму твой вопрос
а если сделать на стороне базы
update Table set parent_id=... where id not in (Id'шники не выделенных записей)
и быстро и красиво
а для полного выделения (SelectedRow=RecordCount)
update Table set parent_id=...  

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 07:34 29-05-2008 | Исправлено: greenpc, 07:46 29-05-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenpc
Жаль, так как эта мысль хорошая и красивая, но она "экстремальная" . На самом деле базы обычно сетевые, а не монопольные. ID-шники не взятые в расчёт могут появиться как раз в тот момент, когда мы собрались апдейтить всех "кого не знаем". Возможно мысль тут не полностью с блокировками, блокировки на разных базах реализуются по разному. Количество выбранных тоже может поменяться. Я например нажал Ctrl+A (датасет в транзакции), потом пошёл попить, захотел отлить, задержался по большому. Потом пришёл к экрану и долго не мог понять чего же я хотел. Потом вспомнил. К этому моменту все уже чего-то насоздавали. А я например даже и не думал, что запрос будет к базе из другой транзакции, не той которая у грида. Так что ID это ID, тут открывать нечего. RecNo - это тоже открывать нечего. А вот букмарки типа #0#0#0#1#0#0#0#2 могли бы выглядеть типа #0#0#0#1#0#0#0#2#0'ID'. Хотя когда я действительно убрал IndexOf по стринглисту 11 тысяч айдишников, всё стало так же как и в текстовом редакторе. Так что 50 тысяч записей из номенклатуры будут копироваться с небольшой задержкой, которая много меньше, чем при открытии датасета.
 
Добавлено:
зы:
Вообще может ли поменяться первое уникальное поле датасорца в транзакции так, чтобы сам датасорц об этом не догадывался?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 09:56 29-05-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
delover
На то она транзакция, что бы быть транзакцией. Ничего не поменяется.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 11:09 29-05-2008
greenpc

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

Цитата:
Вообще может ли поменяться первое уникальное поле датасорца в транзакции так, чтобы сам датасорц об этом не догадывался?

Может.  
и датасорц об этом не узнает пока его не отрефрешишь.Хотя изменять уникальное поле - это "экстримально"
кстати а если удалить запись из БД, то букмарка об этой записи будет не валидна

Цитата:
Я например нажал Ctrl+A (датасет в транзакции),  

запомнил max(id)
и при update where id<=твоего запомненого значения,
тогда всеравно скоко записей создано
ЗЫ: предлагаю закрыть вопрос, т.к. начинаем офтопить

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 11:25 29-05-2008 | Исправлено: greenpc, 12:19 29-05-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenpc
Присоединяюсь к предложению, однако!
 
1. Искал рефреш у TDataSource = class(TComponent) (прошу не путать с датасетом), не нахожу. За то увидел свойство State: TDataSetState, догадываюсь для чего это свойство (одно только Browse моде чего стоит).
 
2. "Датасорц об этом не узнает", возможно, но только в других случаях:
  a) Это поле вычислимое.
  б) Это поле не Integer или не индексное.
  в) Это поле добавленной записи ID которой формируется триггерным генератором, а у компонента может не стоять опция WhenGetGenID = wgOnNewRecord.
 
3. Букмарка будет валидна, так как она содержит связь сортировок DB контрола с текущими номерами записей датасета в текущей транзакции в текущем селекте. И создают эти букмарки именно датасеты, так что им и карты в руки. Странно, букмарка датасета не валидна, а ID записей у неё валидный. Да и для GotoBookmark учитывать ID не придётся.
 
4. max(id) при "for 1 to 8 delete" и "for 1 to 8 insert" бывает похожим. Однако если самому читать текущее значение генератора и учитывать его во where, то можно серьёзно снизить количество случайности, так как генераторы только увеличиваются и от ролбэков транзакций не зависят.
 
OdesitVadim
Я думаю так же, но в пункте 2 может быть я чего либо упустил.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:41 29-05-2008
greenpc

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

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 13:48 29-05-2008
AndreyAgrh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как обработать максимизацию дочернего окна, так чтобы оно разворачивалось не на весь экран, а как в Delphi 7, например, окно с кодом разворачивается.

Всего записей: 204 | Зарегистр. 30-06-2007 | Отправлено: 09:57 30-05-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru