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

Вниз

Как работать с БД не используя VCL?   Найти похожие ветки 

 
B@BY ©   (2005-10-11 14:20) [0]

Не обходимо работать с БД(mdb, dfb и IB) без использования VCL, так как у меня нет формы вообще. Как это сделать?
Делаю так:

uses ADODB,...

function Work(sql:string):integer;
var
 db1:TADOQuery;
begin
//sql:="select id from spiski ORDER BY ID DESC";
db1.Active:=False;
db1.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\Baze.mdb";
db1.SQL.Text:=sql;
db1.Active:=True;
Results:=db1.RecordCount;
end;

После вызова этой функции выдается ошибка: "Access violation..." и останавливается на строчке Results:=.


 
Sergey13 ©   (2005-10-11 14:31) [1]

А что такое sql? Почему присвоение ее закоментарено? Почему она не объявлена?


 
Rule ©   (2005-10-11 14:32) [2]

Results - это что ???


 
Rule ©   (2005-10-11 14:33) [3]

где создается экземпляр db1 ???


 
Desdechado ©   (2005-10-11 14:33) [4]

VCL к работе с БД НИКАКОГО отношения не имеет
db1 для начала создать надо


 
Sergey_Masloff   (2005-10-11 14:42) [5]

Desdechado ©   (11.10.05 14:33) [4]
>VCL к работе с БД НИКАКОГО отношения не имеет
>db1 для начала создать надо
Ага, а DB1 у вас кто? Точно к VCL отношения не имеет? ;-)


 
Desdechado ©   (2005-10-11 14:51) [6]

VCL - это визуальные компоненты, к коим всякие TADOQuery отношения не имеют


 
Sergey_Masloff   (2005-10-11 14:53) [7]

Desdechado ©   (11.10.05 14:51) [6]
>VCL - это визуальные компоненты, к коим всякие TADOQuery отношения не >имеют
Даже не смешно. Учите матчасть.


 
B@BY ©   (2005-10-11 14:58) [8]

А что такое sql? - входной параметр функции Work (function Work(sql:string):integer;).
Results - это что ??? - то что возвращает моя функция.
Rule > где создается экземпляр db1 ???, Desdechado > db1 для начала создать надо - незнаю, наверное в этом то у меня и ошибка... Подскажите как его создать, но так что бы все работало.. (попробовал db1.Create(); - но в скобках нужно указывать TComponent...)


 
Desdechado ©   (2005-10-11 14:59) [9]

[7]
Если у некоторых с VCL ассоциируется все, что можно положить на форму или что вообще поставляется Борландом с Delphi, то это его проблемы. TQuery - это невизуальный компонент, может быть создан и корректно использован без форм и датамодулей, посему:
Учите матчасть.


 
Desdechado ©   (2005-10-11 15:00) [10]

[8]
можешь указать nil, только освобождать не забывай, рекомендую через try-finally


 
Desdechado ©   (2005-10-11 15:02) [11]

можно, кстати, и Application указать


 
Sergey_Masloff   (2005-10-11 15:03) [12]

Desdechado ©   (11.10.05 14:59) [9]
Бабушке своей расскажете. А пока загляните в справку и убедитесь что хотя VCL действительно переводится как библиотека визуальных компонентов, невизуальные компоненты входят в нее точно также. Таким образом, у меня понятие VCL ассоциируется ровно с тем чем она является и чем ее считает сам производитель. Все что наследуется от TObject является полноценным членом VCL.


 
Desdechado ©   (2005-10-11 15:03) [13]

вот только тогда потянется Forms и прочее, что уже является VCL


 
Desdechado ©   (2005-10-11 15:06) [14]

> Все что наследуется от TObject является полноценным членом VCL
Надо же, не знал, что мой класс TMyClass=class(TObject) является членом VCL. Бабушке своей расскажете, как Борланд простым наследованием от TObject включает в свой VCL чужие компоненты и не платит за это денег.


 
Sergey_Masloff   (2005-10-11 15:07) [15]

Desdechado ©   (11.10.05 15:03) [13]
Господи, вы в документацию заглянете или нет?
Не воспринимайте за наезд но вы в данном конкретном случае неправы.


 
B@BY ©   (2005-10-11 15:09) [16]

Попробовал db1.Create(nil); и db1.Create(Application); все равно выдается ошибка в последней строке, где присваивается значение функции Results:=db1.RecordCount;


 
Desdechado ©   (2005-10-11 15:12) [17]

сейчас-то какая ошибка?
текст обновленной функции в студию


 
B@BY ©   (2005-10-11 15:17) [18]

Спасибо всем за советы.

Но чего то я ни чего не понимаю...(так как все равно ни чего не реботает). Придется вечером книгу читать...(как правильно создать экземпляр db1... :(( ).


 
Desdechado ©   (2005-10-11 15:17) [19]

обрати внимание на Rule ©   (11.10.05 14:32) [2]
результат пишется в Result, а не Results


 
Os ©   (2005-10-11 15:19) [20]

db1:= TADOQuery.Create(nil)
Правда сам через nil никогда не пробывал.


 
Dioman ©   (2005-10-11 15:27) [21]


> Все что наследуется от TObject является полноценным членом
> VCL


чушь.

ВЦЛ все то что нарисовал борланд и назвал это частью ВЦЛ.

Ничего более конкретного тут не придумаешь


 
Sergey_Masloff   (2005-10-11 15:36) [22]

Desdechado ©   (11.10.05 15:06) [14]
>> Все что наследуется от TObject является полноценным членом VCL
>Надо же, не знал, что мой класс TMyClass=class(TObject) является членом >VCL.
Вы упорствуете в ереси. Ладно, самому прочитать документацию было недосуг или проблемы с английским или еще что. Но зачем упорствовать когда Вас поправили?
 Почему TurboPower, Raise, Polaris, те же DevRace понимают что наследясь от TObject они расширяют (создают ПОДмножество) VCL и так и позиционируют свои (часто никакого отношения к визуальности) компоненты и классы позиционируют, а вы вдруг решили что ваш TMyClass=class(TObject) вдруг не VCL?
 Не ведите себя как ребенок, ну правда же смешно. Откройте Developer"s Guide и прочтите главу 3 (благо она 4 странички всего). Откроете много нового ;-)


 
Sergey_Masloff   (2005-10-11 15:37) [23]

Dioman ©   (11.10.05 15:27) [21]
Читаем Sergey_Masloff   (11.10.05 15:36) [22] ,
проникаемся и больше не позоримся ;-)


 
Sergey_Masloff   (2005-10-11 15:42) [24]

А вообще мне по фиг, считайте как хотите.


 
Desdechado ©   (2005-10-11 15:59) [25]

> Вы упорствуете в ереси
С религиозными фанатиками смысла спорить не вижу. Очевидные вещи их не убеждают, а только доказывают непознаваемость мира Борланд. Если указанные мне имена пророков призваны доказать, что мои изделия ООП - часть VCL, то эффект достигнут обратный. Пророки просто эксплуатируют модное слово.
Для аналогии: приложение (application) и прикладная программа (application program) - разные вещи. Вот только границы размылись, и большинство употребляет первый термин в смысле второго, а второй забыли.
Рекомендую вернуться к истокам. И к пониманию, что TMyObject=class эквивалентно TMyObject=class(TObject). Что, по сути, родилось задолго до VCL и не отождествлялось с ним НИКОГДА.
За сим прощаюсь.


 
Fay ©   (2005-10-11 17:07) [26]

2 Desdechado ©   (11.10.05 15:59) [25]

>> родилось задолго до VCL
Нельзя ли узнать когда/насколько_задолго ?


 
app ©   (2005-10-11 17:33) [27]

Не ругайтейсь, смысла нет и не тот повод.


 
msguns ©   (2005-10-11 17:50) [28]

А решение-то вот оно ! Открываем папочку C:\Program Files\Borland\DelphiXX\Source,
тупо смотрим ее содержимое и, обнаружив "скрыньку" с именем Vcl, заглядывает туды.. И что же мы видим.. Много всяких интересных файликов.. со смешными именами. Среди которых и ADODB, и DB, и IBXXX, и много еще чаво..

Т.е. по логике Борланда, компоновавшего свои библиотеки, классы доступа к БД относятся к Vcl ;)

Других причин "прописать" TADOQuery к той либо иной библиотеке вроде не видно. Если, конечно, проигнорировать способность работы компиллятора Паскаль с объектами и классами вне зависимости от того, где находятся их коды-источники.


 
Игорь Шевченко ©   (2005-10-11 18:20) [29]

Sergey_Masloff   (11.10.05 15:03) [12]


> Все что наследуется от TObject является полноценным членом
> VCL.


Не обязательно. Еще может являться полноценным членом RTL :)


 
Dioman ©   (2005-10-11 21:34) [30]

Удалено модератором
Примечание: Предлагаешь быть повежливее, начни с себя



Страницы: 1 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.05 c
2-1129042250
Dofin
2005-10-11 18:50
2005.11.06
Как в SQL запрос подставить значение Edit1.Text?


2-1129022447
AndDem
2005-10-11 13:20
2005.11.06
Поиск сервера в локальной сети


14-1129553300
ZeroDivide
2005-10-17 16:48
2005.11.06
Вопрос по оптимальному выбору видеокарты для старого железа.


1-1129186838
REA
2005-10-13 11:00
2005.11.06
TTF Editor


2-1129221130
Fast2
2005-10-13 20:32
2005.11.06
Как во время выполнения программы прописать логин ..