Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

Как читать базу без 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
14-37384
Шишкин Егор
2002-12-24 17:45
2003.01.13
Последный герой 2


3-36967
oss
2002-12-18 12:06
2003.01.13
Update ADO


14-37299
Ежик
2002-12-23 11:07
2003.01.13
Посоветуйте куда сходить в Москве?


1-37164
beginer1
2002-12-29 19:40
2003.01.13
Поиск без тормозов


4-37431
vic_774N
2002-11-24 20:23
2003.01.13
Имеется TreeView в некотором приложении. Получить handle