![]() |
|
![]() ![]() ![]() |
|
MacTep |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
У меня такой вопрос: допустим в базе данных есть несколько полей (Фамилия, Имя, Отчество, Хобби). Одно из них (например, Хобби) содержит текст, состоящий из нескольких слов (например, "коллекционирование марок"). Как отфильтровать таблицу таким образом, чтобы условием фильтрации могла быть подстрока, которая входит в строку поля, например, Хобби? Т.е. например подстрока: "кционир". Тогда программа должна отфильтровать нбор данных так, чтобы остались лишь записи, у которых в строке, которая находится в поле Хобби была такая строка, в которой есть введенная подстрока. Очень надо, а вот с какой стороный подойти, поке не додумался! Помогите, пожалуйста.
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
SELECT ... FROM ... WHERE UPPER(Где ищем COLLATE PXW_CYRL) CONTAINING что ищем (приведенное к верхнему регистру с помощью AnsiUpperCase)
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
MacTep |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
а через функции компонента TTable как-нибудь можно? А если черех SQL, то можно подробнее, например, весь запрос целиком. Please!
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
s:=AnsiUpperCase(Edit1.Text);
s:=StringReplace(s,'*', '%', [rfReplaceAll]);//если пользователь вводить для поиска коллекц* или *колл* Query1.Close; Query1.SQL.Clear; Query1.AQL.Add('SELECT * FROM Table WHERE UPPER(Field1) LIKE '+QuotedStr(s))); Query1.Open; |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
MacTep, через функции TTable - смотри OnFilterRecords. в нём делаешь обычный Pos (...).
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
но учти, что на медленных машинах событие OnFilterRecords работает очень медленно
|
|||
|
||||
MacTep |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
||||
|
|||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
MacTep, да. например, Accept := (Pos (...) <> 0); при необходимости параметры Pos приводи к одному регистру через AnsiUpperCase.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
MacTep |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
x77, спасибо! А насколько этот процесс может быть медленным. Приблизительно на каких машинах и при каких размерах базы данных можно заметить тормоза?
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 1 Всего: 22 |
это зависит впервую очередь от самого обработчика. для достаточно простых, типа Pos, будет работать довольно шустро, вполне сравнимо со скоростью классической фильтрации через свойство Filter. а вот если ты в этом обработчике будешь использовать "громоздкие" по времени операторы и функции, типа вызовов RecordCount или поиска по другой таблице, тормоза будут огромадными. в принципе для таблицы до 100000 записей особых тормозов быть не должно. но это очень расплывчато. надо пробовать для конкретной базы и смотреть.
использование условия в TQuery.SQL быстрее потому, что результирующий НД не будет фетчиться целиком, вся обработка произойдёт на стороне сервера (для парадокса его роль выполняет сама БДЕ), а в TTable - будет. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
bFilterFilials - глобальная переменная
если true, то можно фильтровать
это событие срабатывает тогда, когда ты выполняешь фильтрацию, причем в свойсве Filter не обязательно должно быть выражение фильтрации, просто выполняешь
т.е. здесь можно фильтровать записи с помощью язывка высокого уровня, а не пятью операторами SQL ![]() Это сообщение отредактировал(а) dsergey - 12.10.2004, 13:55 |
||||
|
|||||
MacTep |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
dsergey, вот ето круто, а чуть подробнее, а то слышу звон, а не знаю, где он
![]() -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
Akella |
|
||||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Кстати в DRKB мало примеров на тему "Событие OnFilterRecord".
Событие OnFilterRecord срабатывает каждый раз, когда выполняется код Table1.Filtered:=True; вот пример для одновления фильтра
использовать можно так
сюда можно писать код сравнения, условий и т.д.
при фильтрации на каждой записи вызывается это событие, а по сему каждую запись, можно своими силами отфильтровать или нет. есть переменная Accept, если эта переменная в итоге получает значение True, то текущая запись будет показана, TTable переходит к следующей запси и все с начала вот еще пример (бессмысленные, просто ради примера)
Добавлено @ 16:40 чем сложнее условия, сообветственно медленее будет работать еще пример, фильтрация на частичное совпадение. Кстати, если работать (фильтровать) со строками, то могут быть проблемы с кодировкой и функцией Upper в SQL, а здесь SQL не применяется ![]()
Это сообщение отредактировал(а) dsergey - 18.1.2005, 16:41 |
||||||||||
|
|||||||||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
Хе... А на чем база-то?
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
У меня Paradox, но похожий алгоритм можно, наверное и на другие переложить
Добавлено @ 10:38 По крайней мере в IBQuery и IBTable тоже есть такие же события, соответственно ![]() Это сообщение отредактировал(а) dsergey - 21.1.2005, 10:39 |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
2dsergey: Да, конечно....
Если ты можешь пользоваться запросами, то что тебе мешает использовать LIKE ? Логично и по-моему оптимально |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Like не везде подойдет.
У меня база IB, "лежит под" линуксом. Доступ осуществляется как из под линукса, так и из под виндузы. При создании БД кодировка вообще не указывалась. Поэтому UPPER в єтом случае бессильна. Базу и программы писал не я, поэтому не стоит писать что-то типа "переделвай так или вот так". Исходник нет и автор не хочет их отдавать, сам понимаешь - это его хлеб. Я просто "выдираю" и "впихиваю" туда инфо програмным путем, уже своими программами. Я задавал на форуме вопрос с фильтрацией в таком идиотском случае, но так и не получил внятного ответа. Это сообщение отредактировал(а) dsergey - 21.1.2005, 13:11 |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
2dsergey:
Интересно, в каких случаях может не подойти LIKE? Задавай еще раз свой вопрос - интересно. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
ты наверное забыл о регистронезависимом поиске
не спорь, это уже проверено |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
2dsergey:
В споре рождается истина. Я не знаю, что такое регистронезависимый поиск. Если это всего лишь большие или маленькие буквы, то решается очень просто like.....Lcase(:AD) params[0].asstring:=LowerCase('GjdjDklDduDmd') |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Перевести сравниваемое значение в верхний или нижний регистр не проблема. А "SELECT UPPER(имя поля)" ты пробовал сделать запрос? Так вот в результате запроса в сетку попадают такие значения, какие находятся в этом поле, т.е. значения не переводятся в верхний регистр. Я специально проверил (IBConsole) |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
2dsergey:
вообще не совсем понял, что значит "такие значения, какие находятся в этом поле". И какое отношение имеет к лайку селект, точнее зачем ты путаешь оператор при применении его к полю и к значению поля. Если ты переведешь параметр скажем в верхний регистр и будешь искать значения, верхний регистр которых (не сами, а верхний регистр которых) будет равен параметру то на поиск "Av" выпадет Av,aV,av,AV а что еще надо? Проверено в парадоксе, на скул-сервере такой проблемы вообще нет, да и на других базах думаю решается аналогично. |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
При чем здесь парадокс?? ![]() ![]() Я писал:
![]() Когда создавалась БД, то программист не указывал CharSet(символы хранятся как есть), а значит такие функции как Upper нормально работать не будут. ![]() Это сообщение отредактировал(а) dsergey - 24.1.2005, 16:10 |
||||
|
|||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
2dsergey:
Ладно, не буду спорить про линукс - не видел, но все равно, хранятся - не значит, что с ними нельзя работать и применять какие-либо операции и функции. Ты ведь не преобразовываешь их, не изменяешь, а просто обрабатываешь их некоторой функцией, которая всего лишь возвращает некоторое значение от аргумента, являясь своего рода переводчиком, а не переделывальщиком. А посему, я считаю, что для любой базы в любых системах, элементарные функции работы со строками должны выполняться для этого я и сказал про парадокс, где функции перевода символов отличаются от скульных Ucase и Upper. Может ты просто не то пишешь? И какая связь м/у настройками базы и работой элементарных функций.... ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
смотри, что получается, обрати внимание на тексты запросов
Это сообщение отредактировал(а) dsergey - 24.1.2005, 17:05 Присоединённый файл ( Кол-во скачиваний: 15 ) ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
2dsergey:
Блин!!!! Да, да, я тебя понял! Хм... а теперь напиши select remark from apartments where ucase([remark]) like '%E%' или у тебя upper Интересно, что получится? Если не трудно, пришли картинку. |
|||
|
||||
Alex |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
База, к которой имеется доступ как из под как из под линукса, так и из под виндузы при своем создании не имеет НИКАКИХ ограничений на указание кодировки. Добавлено @ 08:56
И не важно под чем крутится сервак для базы данных это ВСЕРАВНО. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
||||
|
|||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
dsergey Ознакомтесь со статьей http://www.ibase.ru/devinfo/ibrusfaq.htm
И настоятельно советую попробывать выполнить вот такой запрос:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
ucase - неизвестная функция для IB |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
"или у тебя Upper"
|
|||
|
||||
Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Alex
вот, что получилось
обрати внимание "COLLATION PXW_CYRL is not valid for specified CHARACTER SET" Добавлено @ 17:02 пробовал так
вроде нормально Это сообщение отредактировал(а) dsergey - 26.1.2005, 16:59 |
||||||
|
|||||||
Лиходей |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 25.5.2008 Репутация: нет Всего: нет |
Здесь можно почитать как использовать событие OnFilterRecord, можно скачать простенький пример http://delphibd.sk6.ru/
|
|||
|
||||
Magnetto |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 1.2.2007 Где: Ukraine Репутация: нет Всего: нет |
Akella, с простой фильтрацией по одному столбику разобрался , код прекрасно работает
а как сделать с помощью события фильтр рекорд выборку по нескольким столбцам? пробовал так
в этом варианте вообще неправильный фильтр происходит : эти две выбрки работают как бы независимо друг от друга =\ Это сообщение отредактировал(а) Magnetto - 28.2.2009, 12:54 |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
это как? Добавлено через 1 минуту и 28 секунд Чекбоксы не используй, нафиг они? Что, нельзя проверить Edit`ы пустые/непустые и фильтровать только по непустым? Добавлено через 4 минуты и 33 секунды вот по нескольким полям
можно поставить только один чекбокс, где пользователь будет выбирать тип фильтрации: по условию И или по условию ИЛИ. |
|||
|
||||
Magnetto |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 1.2.2007 Где: Ukraine Репутация: нет Всего: нет |
OnFilterRecord , неясно выразился
окей , допустим есть 4 edit'a, каждый относится в отдельному стоблику , каким образом их слепить в один фильтр? и еще один вопрос , в учебнике прочитал об фильтре по диапазону значений
100% известно , что столбик AgeID типа Number и так же 100% известно , что в нем присутствуют записи в диапазоне 5-20 , но таблица становится пустой после приминения фильтра, данные в этот столбик добавлялись кодом
может быть я неправильно добавил их , соответственно фильтр думает , что это не те значения\не того типа? Это сообщение отредактировал(а) Magnetto - 28.2.2009, 13:20 |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Я тебе советую, и многие тоже посоветуют бросить эту затею и заняться изучением SQL, я сейчас жалею, что с самого начала изучения баз данных НЕ начал с изучения SQL. Ttable - это вчерашний день.
Скачай и установи Firebird. Купи книгу Хеллен Борри и будет тебе счастье. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
SetRangeStart - устанавливает нижнюю границу диапазона |
|||
|
||||
Magnetto |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 1.2.2007 Где: Ukraine Репутация: нет Всего: нет |
skip
Это сообщение отредактировал(а) Magnetto - 28.2.2009, 13:40 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
а перед SetRangeStart разве не нужно IndexName указывать?
Добавлено через 44 секунды а зачем тут последняя строка? Datamodule1.Table1.Filtered := true; закоментируй её Добавлено через 3 минуты и 6 секунд Ты или используй диапазоны, или фильтр, или OnFilterRecord |
|||
|
||||
Magnetto |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 1.2.2007 Где: Ukraine Репутация: нет Всего: нет |
||||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Попробуй ещё
Добавлено через 1 минуту и 38 секунд
А если указываешь диапазон по нескольким полям, то нужно создавать составной индекс. Кстати индекс можно на лету создавать. На форуме есть примеры. |
||||
|
|||||
Magnetto |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 1.2.2007 Где: Ukraine Репутация: нет Всего: нет |
насчет динамического создания индексов проблем не возникло...а как понимать составной индекс? т.е динамическое создание понятно
а как работает составной индекс?... отсортируется таблица по одной колонке , а по второй как она будет сортироваться?...абсурд или я не понимаю упд при попытке использовать следующий код
получил следующую ошибку
Это сообщение отредактировал(а) Magnetto - 28.2.2009, 14:12 |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Никакого абсурда. Да сначала будут записи отсортированы по первому полю, а затем внутри этой сортировки по второму полю.
Это сообщение отредактировал(а) Akella - 7.1.2010, 14:54 |
|||
|
||||
ЧиоЧигас |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.10.2009 Репутация: нет Всего: нет |
Хорошая статья по теме - Фильтрация данных в Delphi
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
ЧиоЧигас, то уже прошлый век. Сейчас все стараются работать с SQL
|
|||
|
||||
eyelesss |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.5.2009 Где: Казахстан, Алматы Репутация: нет Всего: нет |
или я не понял вопроса, или... SELECT * FROM ИмяТаблицы WHERE (Хобби LIKE "%'+подстрока+'%") ORDER BY Хобби
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
eyelesss, какого вопроса?
|
|||
|
||||
eyelesss |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.5.2009 Где: Казахстан, Алматы Репутация: нет Всего: нет |
Akella, вопроса автора поста...
![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Автор задавал вопрос в 2004 году. Ему твой ответ, как мёртвому припарка.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |