Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
1-37195
Programist21
2002-12-20 13:57
2003.01.13
Как в ListView добавить...


3-36988
Сергей
2002-12-18 17:04
2003.01.13
SQL


3-36973
Keymaster
2002-12-16 22:43
2003.01.13
Как читать базу без DBGRID


14-37287
Дмитрий К.К.
2002-12-25 09:31
2003.01.13
В чем успех форума


4-37426
Valeriy
2002-11-23 21:50
2003.01.13
активные окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский