Форум: "Базы";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
ВнизКак читать базу без DBGRID Найти похожие ветки
← →
Keymaster (2002-12-16 22:43) [0]Вопрос такой:
Есть база (IB), я хочу из неё всякую штуку читать,
но не хочу использовать DBGrid и ему подобные вещи,
а читать прям из базы в переменную или массив.
Из чего сотроит строка таблицы в базе я знаю,
КАК:
1) Сколько строк содержит таблица
2) Читать прям в переменную какую-нить (например 23) строку
← →
Rad (2002-12-16 23:22) [1](И что бы хелп не почитать...)
//var ibq:TIBQuery;
// iRecCount: integer;
// iDBField: integer;
//допустим, что соединение с БД ты установил и запрос подготовил
with ibq do
begin
Open();
Last();
iRecCount:= RecordCount;
First();
MoveBy(23);
i:= Fields[0].AsInteger;
Close();
end;
← →
Keymaster (2002-12-17 00:25) [2]Нет. не подготовил, и не установил.
Потому что как без DataSet установить соединение - не знаю
я в БД новичок в общем...
← →
ЮЮ (2002-12-17 04:28) [3]>"я в БД новичок в общем", но знаю, "что мне нужна 23 строка"
Для начала, в таблицах нет строк, только записи, а строки пояыляются только в Гриде :0)
Во вторых, прежде чем рыться в чужих таблицах, надо сначала научиться работать со своими :-)
← →
KSergey (2002-12-17 08:46) [4]А без DataSet и нельзя работать с БД в дельфи. И грид тут вовсе ни при чем. Он лишь отображает то, что есть в DataSet. Не надо отображать - не надо и грид ставить (да и DataSource за одно). Вот и все ;)
PS: я понмаю, что можно и без, но извращения тут не рассматриваются, используем стандыртный подход.
← →
Sergey Masloff (2002-12-17 09:15) [5]KSergey ©
>А без DataSet и нельзя работать....
>PS: я понмаю, что можно и без...
Просто отлично! Так все же можно или нет? ;-) A OLE DB это извращение, или через него нельзя работать в Delphi или в нем есть TDataSet? ;-)
← →
SuperUmnik (2002-12-17 09:29) [6]Без DataSet можно работать с базами данных, можно и читать конкретную запись №..... без датасет. Но на компьютере можно и без Виндвовс, Линух и т.д. работать! Можно, но геморойно это! И зачем тогда люди компоненты придумывали? Да что бы максимально облегчить неблагодарный труд программиста! Из Москвы в Питер можно и через Рио-де-жанейро приехать! Но надо ли это?
Проще Надо быть! Проще!
← →
Sergey Masloff (2002-12-17 10:19) [7]SuperUmnik ©
TDataSet как и всякое универсальное средство не всегда удобен. И его использование иногда выливается в гораздо большие проблемы чем неиспользование ;-)Если Вам еще не встречались задачи в которых это так, то это не значит что их нет совсем.
Кстати, из Москвы в Питер через Рио на самолете быстрее чем напрямую пешком.
← →
Sergey13 (2002-12-17 10:55) [8]2Sergey Masloff (17.12.02 10:19)
>TDataSet как и всякое универсальное средство не всегда удобен. И его использование иногда выливается в гораздо большие проблемы чем неиспользование
Я конечно верю, но хотелось бы примерчик. Просто из любопытства.
← →
Sergey Masloff (2002-12-17 11:53) [9]Sergey13 ©
Часто бизнес-объект из реальной жизни плохо ложится на реляционную модель. И удобнее с ним работать не оглядываясь на то как он там раскладывается по таблицам.
Пример: Объект-заказ. С дочерними объектами-позициями. Но позиции сильно отличаются по смыслу:
Заказ№20162-22
- Компьютер SuperComp1 1000USD
- Программа MySuperPuperProg 2000USD
- Полугодовая техническая поддержка 1000USD
Ну понятно что есть что-то общее, типа родительский заказ, дата занесения, дата изменения, автор записи, автор последнего изменения и так далее. А есть совсем разное - у компьютере перечень комплектующих а у техподдержки список условий. И так рекурсивно. У процессора чатота а у материнской платы число слотов. И такие гроздья Master-Detail висеть будут что мама не горюй.
В другом случае создается объект-заказ. С методом AddItem(). Создается БАЗОВЫЙ объект TCommonItem. С методами Store() и Load() и например абстрактным методом Edit(). Который потом переопределяется полностью и частично. Соответственно оформляя свой заказ пользователь используя УНИВЕРСАЛЬНЫЕ ОБЩИЕ методы Add() и Edit() видит каждый раз Разные реализации интерфейсов.
← →
Alexander Vasjuk (2002-12-17 12:07) [10]Sergey Masloff (17.12.02 11:53)
Это пример полиморфизма в ООП. А при чем тут БД?
← →
Andriano (2002-12-17 12:09) [11]Используй API тогда сам. Там минимум универсального.
← →
Sergey Masloff (2002-12-17 12:29) [12]Alexander Vasjuk (17.12.02 12:07)
При том что в БД это не реализуешь. А если реализуешь не в БД то все эти DataSet-ы с их First() Last() Post() и Edit() на фиг не нужны.
Andriano ©
В приведенном мной примере абсолютно параллельно на чем написаны реализации методов Store() и Load(). Хоть API хоть BDE. Можно и не в БД даже писать, вобщем-то. Удобство в разнесении бизнес-логики и логики работы с СУБД. Хотя конечно это нужно не всегда.
← →
Rad (2002-12-17 19:06) [13]2KeyMaster
Походу, про твой вопрос забыли все - увлеклись чистой теорией программирования :))
Если конкретно с Interbase - то почитай хелп про его API. Или, если все-таки не против использования компонентов из Delphi, про IBX - а именно, TIBDatabase, TIBTransaction и TIBQuery.
В крайнем случае можешь попробовать мне написать.
Эх, добрый я что-то сегодня
← →
Keymaster (2002-12-17 22:51) [14]2Rad ©
На какой адрес мыло кидать?
← →
Sergey13 (2002-12-18 11:32) [15]2Sergey Masloff (17.12.02 11:53)
>Часто бизнес-объект из реальной жизни плохо ложится на реляционную модель.
А жизнь вообще не описывается реляционной моделью. 8-) У каждого человека она уникальна, про каждого можно кино снимать. Но это никак не мешает наличию огромного числа программ по кадрово-людскому учету. Ты в своем примере, ИМХО, постарался смешать бульдога с носорогом. Да компьютер и техподдержка - это разные вещи, но это товар с точки зрения продавца. И в программе продавца - это делается легко с помощью простых таблиц. Если рассматривать подзадачу техподдержки - то и там наверное можно обойтись обычным набором таблиц. Причем некоторые эти таблицы могут быть общими - это и есть связб этих подзадач. Суть проблемы при этом - грамотно выделить эти подзадачи и постатраться из связать, а не решать все сразу.
2Keymaster ©
ИМХО, ты еще очень слабо представляешь что такое база данных и как с ней работают вообще. Если тебя не устраивает что то, то может вообще не использовать БД. Лепи свое файло со своей структурой и делай с ним что хошь. Кстати - написал бы чем тебе не нравится стандартный способ?
← →
Sergey Masloff (2002-12-18 12:17) [16]>Sergey13 ©
>Ты в своем примере, ИМХО, постарался смешать бульдога с >носорогом. Да компьютер и техподдержка - это разные вещи, но >это товар с точки зрения продавца. И в программе продавца - это >делается легко с помощью простых таблиц.
Да, счет или накладная делается легко. А вот если на выходе документ в котором расписано что под техподдержкой понимается ответ не более чем на 25 телефонных звонков, а также выезд специалиста не более четырех раз, но есть и особые условия... И за каждую неоговоренную буковку контора потом легко влетает на крупные суммы... Вобщем, я не говорю что мой способ идеальный или даже тем что на моей конкретной задаче он лучше. Но у меня есть система сделанная именно так. Сейчас ~50 установок, в ближайшем будущем - около 200. Работает. Так что такой подход как минимум имеет право быть ;-))
Правда, датасеты есть там. Где отборы с поисками. Но работы с конкретными документами - именно описанным мною способом.
← →
Keymaster (2002-12-18 17:03) [17]>Sergey13 ©
Да, я с базами не очень.
Смысл в том, что мне просто не нужна таблица.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c