घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2004.08.22;
डाउनलोड करें: [xml.tar.bz2];

नीचे

एसक्यूएल प्रश्नों को गति देना इसी तरह की शाखाएँ खोजें


saNat ©   (2004-07-24 00:55) [0]

गुड डे.
Сейчас работаю над первым реальным проектом. Нужно написать БД. Не хотелось использовать визуальные компоненты bd*, поэтому использую запросы SQL. Однако при их выполнении возникают задержки, причем достаточно заметные.
Подскажите пожалуйста, что можно сделать для ускорения работы. Могу скинуть на Ваш E-Mail исходники (~90Kb в архиве)
सादर, ईवा



GanibalLector ©   (2004-07-24 01:13) [1]

>Сейчас работаю над первым реальным проектом
Реальные проекты на парадоксе не делаются.

>Не хотелось использовать визуальные компоненты bd*, поэтому использую запросы SQL
А вот тут я вообще ничего не понял...

>Могу скинуть на Ваш E-Mail исходники
Давай посмотрим...Talla2k#ukr.net



Fay ©   (2004-07-24 18:37) [2]

Кидай, поглядим.



saNat ©   (2004-07-25 00:13) [3]

to Fay: анкета недоступна...



viktor   (2004-07-25 00:18) [4]

Запросы через ХП?



DrPass ©   (2004-07-25 01:07) [5]


> Запросы через ХП?

Особенно в Парадоксе



Fay   (2004-07-25 03:26) [6]

2saNat ©   (25.07.04 00:13) [3]
На ник нажать не судьба?



saNat ©   (2004-07-25 10:49) [7]

Именно - Paradox в ХР.



saNat ©   (2004-07-25 11:00) [8]

to GanibalLector, Fay: выслал исходники...



GanibalLector ©   (2004-07-25 23:38) [9]

2 सा नं
Посмотрел я эти исходники...  :(
Никак не могу понять,почему не использовать тот же DBGrid?У Вас нет ни одного .Вы,по непонятным мне причинам,после выполнения запросов результаты перебрасываете в StringGrid и подобные.И,именно на этом,и получаете задержки от которых хотите избавиться.

З.Ы. ИМХО меняйте StringGrid-ы на DBGrid-ы.И пора уже забыть Парадокс.Фиб,Интербес бесплатны и намного лучше.



saNat ©   (2004-07-25 23:59) [10]

से गणिबालक्टर: Сомневаюсь, что дело в использовании StringGrid вместо DBGrid. Мне показалось, что тормоза в момент вызова SQL.Open... Хотя может быть я не прав.
Не знаю я преимуществ InterBase перед Paradox"ом. У меня был выбор между Oracle и Paradox - для данной задачи все очевидно. После завершения обращу внимание на IB.



Fay ©   (2004-07-26 02:26) [11]

2saNat ©   (25.07.04 23:59) [10]
1) Чем Вам Oracle не угодил?!
2) Не стоит заканчивать под рагадохом. Переход займёт не больше одного дня. И сразу счастье! 8)



saNat ©   (2004-07-26 07:27) [12]

> फे © (26.07.04 02: 26) [11]
> 1) Чем Вам Oracle не угодил?!
Может я ошибаюсь, но Oracle требует неплохую машину для работы. А у меня клиентское приложение может работать на машинах типа P-II



Fay ©   (2004-07-26 09:19) [13]

1) ग्राहक может стоять на машине и попроще.
2) А какой объём данных предвидится?



Sergey13 ©   (2004-07-26 09:39) [14]

2saNat ©   (25.07.04 23:59) [10]
>У меня был выбор между Oracle и Paradox
Я тащусь. 8-) Ты не то выбрал! 8-)))))
А чем был обусловлен выбор? Наличием левых компактов, знаниями или еще чем?



bushmen ©   (2004-07-26 09:41) [15]

>У меня был выбор между Oracle и Paradox

Никаких других СУБД не знаешь? :)



DenK_vrtz ©   (2004-07-26 09:45) [16]

> सर्गेइएक्सन्यूम्एक्स © (13 26.07.04: 09) [39]
>А чем был обусловлен выбор?

а на денюжке всего две стороны, не той стороной упала :)



saNat ©   (2004-07-27 15:39) [17]

А как связан Paradox и XP? [4][5]



Sandman25 ©   (2004-07-27 15:40) [18]

[17] saNat © (27.07.04 15: 39)

В данном контексте XP - это хранимые процедуры, а не Windows XP :)



saNat ©   (2004-07-27 15:41) [19]

मेरे एक मित्र ने एक संस्करण सामने रखा - हर बार SQL.Open निष्पादित होने पर, चालक लोड और अनलोड करता है, और इसमें समय लगता है - एक ही देरी। यह कितना सच है और यदि ऐसा है, तो मैं एप्लिकेशन चलाने के दौरान ड्राइवर को कैसे स्मृति में रख सकता हूं?



Sandman25 ©   (2004-07-27 15:45) [20]

[19] saNat © (27.07.04 15: 41)

यह गलत है।



sniknik ©   (2004-07-27 16:18) [21]

Sandman25 © (27.07.04 15: 45) [20]
> [19] saNat ©   (27.07.04 15:41)
> Это неверно.
ну не всегда, в случае когда движок реализован как COM обьект, именно так и происходит, первый вызов. только не на SQL.Open а на конект.Open (и при условии что ктото гдето не работает с ним).
ADO это ком обьект.

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



Sergey13 ©   (2004-07-27 16:30) [22]

2saNat ©
ИМХО, у тебя в голове каша приличная.
>"Драйверы в памяти"
>"Не хотелось использовать визуальные компоненты bd*, поэтому использую запросы SQL."
>У меня был выбор между Oracle и Paradox

Ты наверное про индексы только слышал и запросы пишешь только типа select * from Table. Будь попроще, спрашивай поконкретнее.



saNat ©   (2004-07-28 19:24) [23]

मैंने एक्सेस में एक आधार बनाने की कोशिश की - गति में वृद्धि नहीं हुई ... यह SQL.Open पर धीमा क्यों है?



Fay ©   (2004-07-28 19:34) [24]

Уважаемый автор! Вы ваще уже совсем офигели, что-ли?!

>> Почему тормозит на SQL.Open?
Да потому! Много здесь кто видел структуру базы и примеры запросов? Не очень. Вы бы ещё спросили - "А почему (желательно поподробней!) моя программа работает не совсем так, как я хочу?".
Всё уже сказано, и с Вашей стороны, видимо, ничего предпринято не было.

मैं आपको रचनात्मक सफलता की कामना करता हूं।



bushmen ©   (2004-07-28 20:04) [25]

> Творческих Вам успехов.

Которых, как я предвижу, в ближайшем будущем не предвидется.



Fay ©   (2004-07-28 20:16) [26]

2bushmen © (28.07.04/20/04 25:XNUMX) [XNUMX]
Может быть. Но вдруг, после завершения первого реального проекта, автор продолжит разработку нереальных? 8)



bushmen ©   (2004-07-28 20:22) [27]

> फे © (28.07.04 20: 16) [26]

Все может быть в этом мире бушующем :)



sniknik ©   (2004-07-28 20:44) [28]

> Почему тормозит на SQL.Open?
а почему бы ему не потормозить в удовольствие? ведь это вам надо чтобы было быстро а ему абсолютно пофигу, оно делает то что ты написал а не то что тебе хочется.

ответь на это и я отвечу на твой (с определенной степенью вероятности, придется ведь догадыватся).



saNat ©   (2004-07-28 22:15) [29]

किराया देना уж у кого, а у Вас все исходники имеются и претензии по этому поводу мне непонятны [24]
P.S. С уважением...



GanibalLector ©   (2004-07-29 00:49) [30]

2 सा नं
Уважаемый ,Вы бы успокоились и попробовали сделать так как я говорил.Замочить все StringGrid-ы и вместо них поставить DBGrid-ы.Дальше,замочить ТОТ класс и вообще забыть про классы...а использовать DataSourсe и связанные с ним гриды.



saNat ©   (2004-07-29 07:34) [31]

to GanibalLector ну да я сильно и не нервничаю [30] :-) а переделать, конечно, можно, но смысл терять время - ведь действия выполняемые мной с помощью методов ReadBD и WriteBD по сути аналогичны компонентам DBGrid и т.п. с той лишь разницей, что я хотел сделать их заточенными под выполнение конкретных действий в своем приложении. переделать не поленюсь.
सादर ...



ЮЮ ©   (2004-07-29 07:53) [32]

GanibalLector © (29.07.04 00: 49) [30]
 Вот только SQL.Open это никак не ускорит, если, конечно, заполненме StringGrida не стоит в обработчике SQL.OnAfterOpen.

>поставить DBGrid-ы.Дальше,замочить ТОТ класс и вообще забыть про классы...а использовать DataSourсe и связанные с ним гриды.

Я только через многие годы понял, насколько слаб DBGrid и стал разрабатывать и использовать собственные классы, а тут человек с первого реального проекта взялся за творчество!!!

>замочить ТОТ класс и вообще забыть про классы...
Вам пора в Президенты, молодой человек :-)



ЮЮ ©   (2004-07-29 07:57) [33]

लेखक को
 если вы по-прежнему стесняетесь опубликовать текст запроса и структуры используемых таблиц, шлите уж и сюда
Kolesov <ухо> msun <тчк> ru



sniknik ©   (2004-07-29 08:09) [34]

> ведь действия выполняемые мной с помощью методов ReadBD и WriteBD по сути аналогичны компонентам DBGrid и т.п.
наверняка нет (незнаю что ты там делаеш), но отличия скорее всего координальные.
1 ты перегоняеш весь рекордсет в стринггрид (предположение) а дбгрид работает с отображаемой областью only.
2 преобразований данных в строки (длительныя операция) в дбгриде не требуется (во всяком случае для всех записей, а только для того минимума что будет отображен)
3 скорее всего еще есть, но предположения уже достали.

SQL.Open также не ускорит безпочвенный треп здесь, можеш не заморачиваться, никто тебе не даст готового рещения без исходных данных и твоего активного участия, а этого ты похоже делать не собираешся. (еще одно предположение ;)



saNat ©   (2004-07-29 13:28) [35]

Угу... Ок, сегодня после работы выложу: метод чтения из БД и структуры таблиц - всё?
सादर ...



Term   (2004-07-29 14:37) [36]


> сегодня после работы выложу: метод чтения из БД и структуры
> таблиц

а что тянуть до конца рабочего дня, делов то пару кликов мышой



Rule ©   (2004-07-29 15:56) [37]

2Avtor

Не обижайтесь на нападки моих коллег, просто не надо было использовать такие громкие слова как "я работаю над реальным проектои" и " у меня был выбор между такими СУБД", я бы посоветовал эти фразы поменять на такие : " вот только начал пробовать писать программы и мне показалось что лучше было бы использовать вот такие СУБД ... , подскажите пожалуйста, в чем я заблуждаюсь и где можна взять литературу"

со своей стороны я бы хотел вам посоветовать обратится за информацией на сайтик ibase.ru  так как считаю что наиболее универсальной и простой является именно интербейз (фаерберд) и причем абсолютно бесплатная, на сайте достаточно информации, чтобы от азов дойти до профессионала ...

От дужи вам желаю творческой удачи и не сдавайтесь, скоро и вы будете смеятся над начинающими :)



sniknik ©   (2004-07-29 22:20) [38]

> скоро и вы будете смеятся над начинающими :)
смысл не в этом, и кстати редко кто над ними смеется, чаше досада на чела который обшатся не умеет. а ведет себя как партизан про свое сказать как можно меньше (уж если совсем припрут) но тем не менее выбить/выциганить/выпросить/... ответ на вопрос.
не понимая что ответ с вопросом взяимосвязаны.
а когда вопросы больще на развод похожи, естественно в ответ только насмешки.



saNat ©   (2004-07-30 00:16) [39]

Ну вот только добрался до Internet"а... Он у меня дома, а не на рабочем месте и обеденный перерыв лимитирован [36]
Ну по поводу "реального проекта" , то имелось ввиду приложение, которое должен работать, принося пользу и т.п., а не решение школьных задачек и экспериментов с чем-либо (что то же не плохо, но все же разные вещи). "Выбор между Paradox и Oracle" - ну так оно и было - с Paradox"ом начинал изучать БД, а Oracle "изучали" в университете... Больше ни чем ни пользовался. Был вариант с Access, но не знаю... склонился к первому. Спасибо Rule www.IBase.ru [37]. Будем знать.
-------------
По поводу того, что нет кода - мне не всегда удается найти проблему, если она вырезана из общей массы и ты не знаешь как оно работает в целом... С другой стороны, понятно, что навязывать копаться в своих исходниках - не дело. Поэтому сразу было предложено скинуть исходники желающим... В любом случае исправляюсь.
-------------
Идея состоит в передаче данных из филиалов в управление посредством e-mail. Данные представляют собой отчеты о деятельности за сутки. На данный момент все передается по телефону - лорого. Однако филиалы нужно оборудовать машинами, убедить начальство что проект выгоднее экономически и т.п. в конце-концов отладить саму программу. Поэтому на первом этапе предполагается ввод данных по телефону, но не в стандартные бумажные формы, а посредством приложения-сервера. Одновременно с этим решается задача резервирования - на случай если нет возможности доставки данных по эл. почте. Для решения вопроса со скоростью передачи я использую списки с данными - набирать текст гораздо дольше чем шелкать мышью по спискам. Сюда входят стандартные типы работ, список филиалов, персонал, а/м. Все эти данные разнесены по таблицам вида:


Филиалы
PhilialTable
------------
ID
Name
Address
PhoneCode
E-Mail

Персонал
PeopleTable
-----------
ID
FIO
Post

Автотранспорт
AutoTable
---------
ID
AutoType
AutoNumber
PhilialID

Таблица-связка для определения принодлежности персонала к филиалу
PhilialPeopleTable
------------------
PhilialID
PeopleID



saNat ©   (2004-07-30 00:31) [40]

На рабочей форме лежит компонент PageControl. Его вкладки разбиты по темам. Например, информация о филиале, аварийные заявки, опасные заявки...
Ну вот не лежит у меня душа со времен университета к компонентам DB* (Grid и подобные)... Мне показалось что будет лучше написать свой модуль для чтения/записи БД, работающий со "стандартными" компонентами
Получилось нечто следующее:

//Чтение данных
Procedure TBDModule.ReadBD(Component:TObject; FieldsList:String;TablesList:String;WheresList:String;WhereOn:Boolean);
Var
 RowPosition:Integer;
 ColPosition:Integer;
Begin
//Определение количества полей запроса
FieldsCount:=SetFieldsCount(FieldsList);
With MySQL Do
 Begin
  //Деактивация компонента
  Close;
  //Очистка текста запроса
  SQL.Clear;
  //Добавление текста запроса
  SQL.Add("Select "+FieldsList+" From "+TablesList);
  If WhereOn
   Then SQL.Add("Where "+WheresList);
  //Выполнение запроса
  Open;
  //Установка указателя на первую запись
  First;
  //Вывод данных в компонент типа "TListBox"
  If Component.ClassName="TListBox"
   Then
    Begin
     //Очистить
     (Component As TListBox).Items.Clear;
     //Пока не закончатся данные
     While Not EOF Do
      Begin
       //Вывести значение
       (Component As TListBox).Items.Add(FieldByName(SetFieldsByNumber(FieldsList,1)).AsString);
       //Перейти к следующей записи
       Next;
      End;
    End;
  //Вывод данных в компонент типа "TCheckListBox"
  If Component.ClassName="TCheckListBox"
   Then
    Begin
     //Очистить
     (Component As TCheckListBox).Items.Clear;
     //Пока не закончатся данные
     While Not EOF Do
      Begin
       //Вывести значение
       (Component As TCheckListBox).Items.Add(FieldByName(SetFieldsByNumber(FieldsList,1)).AsString);
       //Перейти к следующей записи
       Next;
      End;
    End;
  //Вывод данных в компонент типа "TEdit"
  If Component.ClassName="TEdit"
   Then
    Begin
     //Очистить
     (Component As TEdit).Text:="";
     //Вывести значение
     (Component As TEdit).Text:=FieldByName(SetFieldsByNumber(FieldsList,1)).AsString;
    End;
  //Вывод данных в компонент типа "TLabel"
  If Component.ClassName="TLabel"
   Then
    Begin
     //Очистить
     (Component As TLabel).Caption:="";
     //Пока не закончатся данные
     While Not EOF Do
      Begin
       //Вывести значение
       (Component As TLabel).Caption:=(Component As TLabel).Caption+FieldByName(SetFieldsByNumber(FieldsList,1)).AsString+", ";
       //Перейти к следующей записи
       Next;
      End;
     (Component As TLabel).Caption:=Copy((Component As TLabel).Caption,1,Length((Component As TLabel).Caption)-2);
    End;
  //Вывод данных в компонент типа "TIDField"
  If Component.ClassName="TIDField"
   Then
    Begin
     //Очистить
     (Component As TIDField).Code:="";
     //Вывести значение
     (Component As TIDField).Code:=FieldByName(SetFieldsByNumber(FieldsList,1)).AsString;
    End;
  //Вывод данных в компонент типа "TStringGrid"
  If Component.ClassName="TStringGrid"
   Then
    Begin
     (Component As TStringGrid).RowCount:=2;
     ColPosition:=0;
     While ColPosition<=((Component As TStringGrid).ColCount-1) Do
      Begin
       (Component As TStringGrid).Cells[ColPosition,1]:="";
       Inc(ColPosition);
      End;
     RowPosition:=1;
     While Not EOF Do
      Begin
       ColPosition:=0;
       While ColPosition<=((Component As TStringGrid).ColCount-1) Do
        Begin
         (Component As TStringGrid).Cells[ColPosition,RowPosition]:=FieldByName(SetFieldsByNumber(FieldsList,ColPosition+1)).AsString;
         Inc(ColPosition);
        End;
       Next;
       If Not EOF
        Then
         Begin
          (Component As TStringGrid).RowCount:=(Component As TStringGrid).RowCount+1;
          Inc(RowPosition);
         End;
      End;
    End;
  If Component.ClassName="TComboBox"
   Then
    Begin
     (Component As TComboBox).Items.Clear;
     While Not EOF Do
      Begin
       (Component As TComboBox).Items.Add(FieldByName(SetFieldsByNumber(FieldsList,1)).AsString);
       Next;
      End;
    End;
 End;
End;

Внутрь я передаю объект, в который собираюсь выводить данные, список полей, список таблиц и список условий отбора (если требуется - последний параметр). Т.К. с TStrings я до конца не разобрался (пока), то параметры передаются строкой и пришлось сделать метод для поиска метода по его порядку в списке... После самого запроса следует реализация вывода в различные "объекты-приемники."



saNat ©   (2004-07-30 00:45) [41]

Итак, сначала выбирпаем филиал.По вызову формируется запросом список наименований. После выбора идентификатор запоминаем в переменную типа

TIDField=Class(TObject)
 Code:String;
End;

Здесь пришлось следовать идее - в метод передаем объект. Писать отдельный метод для получения идентификатора не хотелось (хотя...)
Дальше посылаем запрос на вывод данных о филиале в Label"ы.
Вышеописанное выглядит так:

//Вывести окно
PhilialSelect.ShowModal;
//Если выбран филиал...
If PhilialSelect.PhilialName<>"None"
 Then   //...то
  Begin
   //Вывести значение в соответствующее окно
   PhilialName.Text:=PhilialSelect.PhilialName;
   //Вывести адрес филиала
   BDModule.ReadBD(AddressValue,
                   "Address",
                   "PhilialTable",
                   "ID=""+ThisID+""",True);
   //Если значений нет...
   If AddressValue.Caption=""
    Then   //...вывести подпись
     AddressValue.Caption:="отсутствует";
   //Вывести кода телефон АДС
   BDModule.ReadBD(ADSPhoneValue,
                   "PhoneCode",
                   "PhilialTable",
                   "ID=""+ThisID+""",True);
   //Если значений нет...
   If ADSPhoneValue.Caption=""
    Then   //...вывести подпись
     ADSPhoneValue.Caption:="отсутствует";
   //Запись кода во вспомогательную переменную
   BufString:="("+ADSPhoneValue.Caption+") ";
   //Вывести телефоны АДС
   BDModule.ReadBD(ADSPhoneValue,
                   "Number",
                   "PhoneTable,PhilialPhoneTable",
                   "(PhilialPhoneTable.PhilialID=""+ThisID+"")And"+
                   "(PhilialPhoneTable.PhoneID=PhoneTable.ID)And"+
                   "(PhoneTable.Type="1")",True);
   //Если значений нет...
   If ADSPhoneValue.Caption=""
    Then   //...вывести подпись
     ADSPhoneValue.Caption:="отсутствует";
   ADSPhoneValue.Caption:=BufString+ADSPhoneValue.Caption;
   //Вывести сотовый АДС
   BDModule.ReadBD(ADSMobileValue,
                   "Number",
                   "PhoneTable,PhilialPhoneTable",
                   "(PhilialPhoneTable.PhilialID=""+ThisID+"")And"+
                   "(PhilialPhoneTable.PhoneID=PhoneTable.ID)And"+
                   "(PhoneTable.Type="4")",True);
   //Если значений нет...
   If ADSMobileValue.Caption=""
    Then   //...вывести подпись
     ADSMobileValue.Caption:="отсутствует";
   //Вывести факс
   BDModule.ReadBD(FaxValue,
                   "Number",
                   "PhoneTable,PhilialPhoneTable",
                   "(PhilialPhoneTable.PhilialID=""+ThisID+"")And"+
                   "(PhilialPhoneTable.PhoneID=PhoneTable.ID)And"+
                   "(PhoneTable.Type="3")",True);
   //Если значений нет...
   If FaxValue.Caption=""
    Then   //...вывести подпись
     FaxValue.Caption:="отсутствует";
   //Вывести адрес электронной почты
   BDModule.ReadBD(ADSEMailValue,
                   "EMail",
                   "PhilialTable",
                   "ID=""+ThisID+""",True);
   //Если значений нет...
   If ADSEMailValue.Caption=""
    Then   //...вывести подпись
     ADSEMailValue.Caption:="отсутствует";
//Обновление списка поступивших заявок
   RefreshWarningPage;
   RefreshOutPage;
   RefreshClearPage;
  End;
End;


//Нужно удалить принудительный вывод "отсутствует" - в БД автоматом ставится значение по умолчанию - сам знаю :-)
Предположим поступает заявка. В новом окне выводится список персонала, список авто и список номеров авто (по этому поводу пока сам думаю - есть идея отделить типы автомобилей от их номеров - для уменьшения избыточности, с другой стороны во всем надо знать меру - тогда можно одним списком выводить и машиу и номер. пока думаю). Так же выводится список стандартных работ по данной заявке. Получаем такой фрагмент:

BDModule.ReadBD(NewWarning.ADSPeopleList,
                "FIO",
                "PeopleTable,PhilialPeopleTable",
                "(PhilialID=""+ThisID+"")And"+
                "(PeopleID=ID)",True);
BDModule.ReadBD(NewWarning.ADSAutoTypeList,
                "AutoType",
                "AutoTable",
                "PhilialID=""+ThisID+""",True);
BDModule.ReadBD(NewWarning.ADSAutoNumberList,
                "AutoNumber",
                "AutoTable",
                "PhilialID=""+ThisID+""",True);


Эти списки приходится заполнять перед или во время активации формы, т.к. они разные для каждого филиала.



saNat ©   (2004-07-30 00:49) [42]

При отладке возникает самая большая пауза во время выполнения SQL.Open. При выполнении нескольких запросов эта задержка ощутима. Особенно, если учесть, что под диктовку нужно вводить несколько заявок. Вроде бы количество запросов не большое (максимум 5) и количество выбираемых данных мало - до 1000 записей на будущее.

По-моему по сути вопроса это все. Хотя может и упустил чего. Желающим могу скинуть исходники... Спасибо всем откликнувшимся.

सादर ...



sniknik ©   (2004-07-30 08:42) [43]

упустил, компаненты доступа, используемый драйвер(движок), связь между компанентами (или отсутствие таковой)...

насчет показаного, как и думал... хреново. стандартные db компаненты более интелектуальны...
передаются все строки независимо от того нужны ли они для отображения, преобразование в строку, используется поиск имени (fieldbyname) в цикле, и для заполнения разных компанент используется переоткрытие и сканирование одной и той же таблицы только потому что поля заполнения разные.
все это очень нехорощо.

теперь к SQL.Open, говориш задержка? а сколько? секунда, две, минута?
если компаненты работают/настроены по серверной технологии то перекачка данных обязательно займет какоето время... вопрос, оправданое ли, или действительно тормозят, а этого у тебя не понятно.
вот я делаю запрос простой к таблице в ней 25 полей все числовые, записей 2076. отрабатывает (open) за 0,1сек. это как для тебя задержка?



Sergey13 ©   (2004-07-30 09:27) [44]

2saNat ©   (30.07.04 00:16)
>Поэтому на первом этапе предполагается ввод данных по телефону, но не в стандартные бумажные формы, а посредством приложения-сервера.
Не делай этого!!! Тебя проклянут и загубят этим может быть неплохую идею.

>Ну вот не лежит у меня душа со времен университета к компонентам DB* (Grid и подобные)... Мне показалось что будет лучше написать свой модуль для чтения/записи БД, работающий со "стандартными" компонентами
Прикинь - приходит парень, ездивший до этого на велосипеде как любитель, в авторем мастерскую и говорит - "ну не лежит у меня душа к карбюратору, мне кажется...".



Rule ©   (2004-07-30 09:42) [45]

//Прикинь - приходит парень, ездивший до этого на
//велосипеде как любитель, в авторем мастерскую и говорит -
//"ну не лежит у меня душа к карбюратору, мне кажется...".

Вот это мне понравилось, в предыдущем посте, вот атк оно и есть,  не придумывай велосипед, ради бога, если тыхочешь использовать парадокс и стандартные компоненты, то возьми ты этот BDE  да и напиши программку, только напиши правильно, разберись как это сделать, иначе тебе же потом хуже будет, прийдется все переписывать а перед этим ещё помучатся нехило,
вот тебе ссылки от АП

http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Kuzmenko/bde.htm&file_id=Kuz menkoBDE

http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/D7/d7stb/index.html&file_id= d7stb

я думаю достаточно пока, если чего покапаешься у подгоретского или в гугле, там достаточно всего



Term   (2004-07-30 09:59) [46]

мдя задача тривиальная, а наворотил то ... и главный вопрос ЗАЧЕМ???
я этими компонентами DBGrid пользуюсь всю жизнь и не разу никаких проблем не было.
Зачем тратить время на то что и так сделано давно и намного лучше, или ты думаеш в Боорланде народ глупее тебя сидит :)))
В общем брось эту дурь со стринггридом, его надо использовать там где надо, а не в извращениях.
И самое что меня заинтересовало чем тебе DBGrid не угодил, уж просвети чтобы все знали, а то ничего конкретного ты не сказал



Rule ©   (2004-07-30 10:29) [47]

वैसे, ग्रिड के संबंध में, मैं आपको एहलीब को समझने की सलाह देता हूं "ई, अगर मैं इसका पता लगाता हूं, तो मैं आपको गारंटी देता हूं कि 90 प्रतिशत कुछ और नहीं चाहते हैं, लेकिन यदि आप चाहते हैं, तो आप बस इस पुस्तकालय में जो चाहते हैं उसे जोड़ते हैं और डेवलपर्स को लौटते हैं कि दूसरों ने आपका क्या फायदा उठाया।" उस तरह



Term   (2004-07-30 11:52) [48]


> советую разобраться в EhLib"e,

это точно, там есть много такого что тебя обрадует :)))



dtm   (2004-07-30 15:12) [49]

[40] - [41]
Божачка ;)... I робяць жа людзi дарэмныя рэчы ... =)

[47] Rule
А если захочется, то пусть посмотрит DevExpress Quantum Grid Suite. После этого точно не захочется ;)



Slym ©   (2004-07-30 16:39) [50]

Парень.. ты про BeginUpdate/EndUpdate слышал?...
и о DisableControls/EnableControls...

И еще часто ганяясь за одним критерием приходится жертвовать другим...



Term   (2004-07-30 17:09) [51]


> Парень.. ты про BeginUpdate/EndUpdate слышал?...
> и о DisableControls/EnableControls...


это ты автору??? то явно не к месту :)))



पन्ने: 1 2 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2004.08.22;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.82 एमबी
समय: 0.079 c
14-1091605212
Layner
2004-08-04 11:40
2004.08.22
रूसी के खिलाफ ऐसा भेदभाव क्यों ???


4-1089188971
Анатолий
2004-07-07 12:29
2004.08.22
LPT को प्रोग्रामेटिक रूप से अक्षम करें


1-1092022044
SNV-शीतल
2004-08-09 07:27
2004.08.22
घटक आकार


1-1091691282
SerzhK
2004-08-05 11:34
2004.08.22
क्या आपके प्रोजेक्ट में VB पर कोड टुकड़ा डालना संभव है


1-1091620202
Anton777
2004-08-04 15:50
2004.08.22
रजिस्ट्री का उपयोग करके एक फ़ाइल हटाएं





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский