Форум: "Начинающим";
Текущий архив: 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