Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизРабота с БД. Найти похожие ветки
← →
ViktorZ (2006-01-31 21:52) [0]Что нужно сделать чтоб по нажатию на кнопку выполнился запрос типа селект и отобразился в гриде.
Вот что я пишу:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("Select * From Acheck Where Cnum = "3"" ");
Но это не работает. Где вообще прочитать про азы работы с Бд в делфи. СКуль я как нить сам разберу. А вот пример работы. Вообще идея такова что взять из одной таблицы диапазон данных сравнить их с другой и взять из из второй данные запихнуть их в массив или переменную чтоб потом вывести в отчет. Помогите пжлста. Заранее огромное спасибо.
← →
Виталий Панасенко (2006-01-31 21:56) [1]А если так ?
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("Select * From Acheck Where Cnum = "3"" ");
Query1.Open;
← →
ViktorZ © (2006-01-31 21:59) [2]Кстати мож это важно. У меня Ачек таблица лежит на диске D в папке Mydb. Это где нить нужно писать. Или делфи возмет из алиасов.
← →
Desdechado © (2006-01-31 22:14) [3]Tdatabase-TQuery-Tdatasource-Tdbgrid
примеры в "C:\Program Files\Borland\Delphi7\Demos\Db\"
← →
ЮЮ © (2006-02-01 04:08) [4]
> Где вообще прочитать про азы работы с Бд в делфи
Начни с изучения SQL
Cnum = "3"
Символ " испльзуется для "обрамленя" имени поля таблицы, в случае, когда оно не является идентификатором в принятом смысле или для его имени выбрано зарезервированое слово
Cnum = "3" означает значение поля Cnum = значению поля "3", которого в таблице нет
← →
piople © (2006-02-01 05:43) [5]
> ЮЮ © (01.02.06 04:08) [4]
>
> > Где вообще прочитать про азы работы с Бд в делфи
>
> Начни с изучения SQL
> Cnum = "3"
> Символ " испльзуется для "обрамленя" имени поля таблицы,
> в случае, когда оно не является идентификатором в принятом
> смысле или для его имени выбрано зарезервированое слово
>
Да не факт, в разных СУБД по разному, в MSSQL это одинарная ковычка...
← →
Fay © (2006-02-01 06:15) [6]2 piople © (01.02.06 5:43) [5]
> в MSSQL это одинарная ковычка...
Да ну?!
← →
ViktorZ © (2006-02-01 08:43) [7]>Начни с изучения SQL
Я запросы составлять более менее умею. Как мне сделать так чтобы запрос при выполнении отображался в гриде?
← →
piople © (2006-02-01 08:53) [8]
> Fay © (01.02.06 06:15) [6]
> 2 piople © (01.02.06 5:43) [5]
> > в MSSQL это одинарная ковычка...
> Да ну?!
Ну в моей точно :))
← →
ZeroDivide © (2006-02-01 08:54) [9]
> Я запросы составлять более менее умею. Как мне сделать так
> чтобы запрос при выполнении отображался в гриде?
>
Положи DataSource у кажи ему DataSet, настрой dbGrid на этот DataSource
← →
ЮЮ © (2006-02-01 09:06) [10]
> Я запросы составлять более менее умею
Cудя по предложенному - не очень. Такой никогда не отобразится в гриде, как не старайся
← →
msguns © (2006-02-01 09:26) [11]>ЮЮ © (01.02.06 09:06) [10]
>Такой никогда не отобразится в гриде, как не старайся
Ну я бы сказал немного по-другому: запрос-то в принципе корректен и очень хочет что-нибудь отобразить в гриде, но не может ;)))
← →
Виталий Панасенко (2006-02-01 09:29) [12]
> msguns © (01.02.06 09:26) [11]
> >ЮЮ © (01.02.06 09:06) [10]
> >Такой никогда не отобразится в гриде, как не старайся
>
> Ну я бы сказал немного по-другому: запрос-то в принципе
> корректен и очень хочет что-нибудь отобразить в гриде, но
> не может ;)))
Хочет, но не может ? Или может, но не хочет ? :-)))
← →
ViktorZ © (2006-02-01 09:33) [13]Гы. У меня в гриде отображается таблица. Я в кнопочке написал вот то что Мне Виталий посоветовал.
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("Select * From Acheck Where Cnum = "3"" ");
Query1.Open;
Query1.SQL.Add("Select * From Acheck Where Cnum = "3"" ");
Вот в селекте какие кавычки там где 3 стоят. двойные или одинарные.
В общем как сделать так чтоб грид все таки смог :-)))
← →
msguns © (2006-02-01 09:34) [14]>ViktorZ
Вполне исчерпывающе принципы отображения информации БД в дельфе описаны во встроенной справке.
Исследуй компоненты DataBase+Table+Query+UpdateSQL и класс (именно класс, а не компонент Session, использование которого в проектах не рекомендую до поры до времени) TSession
Для отладки запросов используй "стороннее" средство типа SQL Explorer (входит в комплект поставки делфы), в проект вставляй работающие запросы. В этом случае избежишь многочисленных ошибок типа сабжевой и сэкономишь кучу времени и нервов.
← →
msguns © (2006-02-01 09:37) [15]>ViktorZ © (01.02.06 09:33) [13]
>В общем как сделать так чтоб грид все таки смог :-)))
Попробуй так:
Query1.SQL.Add("Select * From Acheck Where Cnum = :n");
Query1.ParamByName("n").AsString := "3";
← →
Ильш © (2006-02-01 09:38) [16]Удалено модератором
← →
Плохиш © (2006-02-01 10:50) [17]
> ViktorZ © (01.02.06 09:33) [13]
> Гы. У меня в гриде отображается таблица.
Не надо врать, эту галиматью даже компилятор не пропустит.
← →
ViktorZ © (2006-02-01 10:57) [18]Sql Explorer вообще вещь хорошая, я там много чего на селектить могу. Однако после копирования того что я пишу в эксплорере в делфи ничего не происходит, а иногда даже ругается.
← →
Плохиш © (2006-02-01 11:07) [19]
> ViktorZ © (01.02.06 10:57) [18]
Так, про примеры сказали в [3], про справку в [14], осталось только сказать, иди купи книжку чтоли какую.
> Однако после копирования того что я пишу в эксплорере в
> делфи ничего не происходит, а иногда даже ругается.
Странно, у меня всегда работает так же как и в Sql Explorer и не ругается.
← →
msguns © (2006-02-01 11:14) [20]>ViktorZ © (01.02.06 10:57) [18]
>Однако после копирования того что я пишу в эксплорере в делфи ничего не происходит, а иногда даже ругается.
Эксплорер работает на BDE. Если ты используешь работающие в нем запросы в дельфишных компонентах закладки BDE, то они будут тоже выполняться. А вот если у тебя доступ не через бде, а, к примеру, через ADO, то запросы, "подготовленные" в эксплорере, запросто могут "не итти".
Приведи хоть один пример работающего в эксплорере, но "вылетающего" в делфе (TQuery) запроса.
← →
ViktorZ © (2006-02-01 14:52) [21]Пишу експлорере select * From Acheck Where Cnum = 3. В делфях выводит в гриде все поля таблицы как будто условия where даже и не было.
← →
ZeroDivide © (2006-02-01 15:03) [22]
> Пишу експлорере select * From Acheck Where Cnum = 3. В делфях
> выводит в гриде все поля таблицы как будто условия where
> даже и не было.
Переоткрой набор данных
Query.Close;
Query.SQL.Clear;
Query.SQL.Add("select * From Acheck Where Cnum = 3");
Query.Execute;
Если используемый Query может исполнять еще и параметрические запросы, то
Query.DeleteVariables;
← →
Ega23 © (2006-02-01 15:05) [23]
> piople © (01.02.06 08:53) [8]
>
>
> > Fay © (01.02.06 06:15) [6]
> > 2 piople © (01.02.06 5:43) [5]
> > > в MSSQL это одинарная ковычка...
> > Да ну?!
>
> Ну в моей точно :))
>
А ты попробуй как-нибудь двойную поставить. Узнаешь много нового... :о)
← →
Shirson © (2006-02-01 15:28) [24]
> ZeroDivide © (01.02.06 15:03) [22]
> Query.Close;
> Query.SQL.Clear;
> Query.SQL.Add("select * From Acheck Where Cnum = 3");
> Query.Execute;
Что такое Query.Execute?
← →
Ega23 © (2006-02-01 15:34) [25]
> Что такое Query.Execute?
Он имел ввиду Query.Open
← →
ZeroDivide © (2006-02-01 15:41) [26]
> Что такое Query.Execute?
Для некоторых видов Query этот метод (в стандартном TQuery - ExecSQL) используется для выполнения SQL. (Правда в основном для запросов, которые не возвращают курсор на данные :) Для select-ов в некотрых Query, аналогичен Open)
← →
Shirson © (2006-02-01 15:48) [27]Первый раз такое вижу. Это что за некоторые типы Query, котоые такую команду имеют? ThridParty?
Для запросов, которые возвращают НД, использование ExecSQL заказано (не в основном, а совсем :) ).
← →
ZeroDivide © (2006-02-01 15:55) [28]
> Это что за некоторые типы Query, котоые такую команду имеют?
> ThridParty?
Да, разумеется.... Пример такого Query - TOracleQuery из DOA.
> не в основном, а совсем :)
Для стандартного TQuery - да.
← →
Ega23 © (2006-02-01 15:56) [29]
> Первый раз такое вижу. Это что за некоторые типы Query,
> котоые такую команду имеют?
Ну, к примеру, TADOCommand.
← →
msguns © (2006-02-01 16:16) [30]>Ega23 © (01.02.06 15:56) [29]
>Ну, к примеру, TADOCommand.
Там нет такой команды
← →
Ega23 © (2006-02-01 16:22) [31]
> msguns © (01.02.06 16:16) [30]
>
> >Ega23 © (01.02.06 15:56) [29]
> >Ну, к примеру, TADOCommand.
>
> Там нет такой команды
>
TADOCommand.Execute
Causes the ADO command object’s command to be executed.
function Execute: _RecordSet; overload;
function Execute(const Parameters: OleVariant): _Recordset; overload;
function Execute(var RecordsAffected: Integer; var Parameters: OleVariant; ExecuteOptions: TExecuteOptions = []): _RecordSet; overload;
Description
Call Execute to immediately execute the command specified in the CommandText property.
RecordsAffected indicates the number of records, if the command operates on data, that are affected by the command after execution.
Parameters is a collection of parameters for the command, unnecessary if the command does not use any parameters.
ExecuteOptions is a TExecuteOptions value that specifies the characteristics of the command execution.
When a command is executed that creates a recordset, Execute returns the recordset and it must be accessed through an ADO dataset component. To do this, assign the return value of Execute directly to the recordset property of an ADO data set component. For example:
ADODataSet1.RecordSet := ADOCommand1.Execute;
?
← →
msguns © (2006-02-01 16:48) [32]Там нет такой команды - ExecSQL
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.045 c