Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Как работать с БД не используя 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.04 c
4-1125398035
MrBob
2005-08-30 14:33
2005.11.06
Печать на матричнике без промотки


3-1127375236
Jioniro
2005-09-22 11:47
2005.11.06
Поиск по контексту с помощью SQL запроса


14-1129122903
Антоний
2005-10-12 17:15
2005.11.06
Для печати проспектов


3-1127313404
WG
2005-09-21 18:36
2005.11.06
Поле имеет название "DATE", из-за этого не могу выполнить запрос


3-1127796192
Сергей_1983
2005-09-27 08:43
2005.11.06
Группировка в dxDBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский