Форум: "Начинающим";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
ВнизDelphi. Соединение с БД MS SQL Server Найти похожие ветки
← →
Соня (2011-05-16 14:48) [0]Считываю данные из таблиц БД в SQL Server с помощью DBGrid. В пяти таблицах данные считываются все, а в одной вообще не считываются! То есть видно, что появились соответствующие поля, количество строк = количеству строк в таблице БД, а сами строки пустые!
Может кто что сказать по этому поводу?
← →
Ega23 © (2011-05-16 14:55) [1]Это ошибка. В программе.
← →
sniknik © (2011-05-16 14:57) [2]в DBGrid данных нет!!! это тебе в виде наглядного подтверждения...
> а сами строки пустые!
наделал колонок с несуществующими полями?
← →
Ega23 © (2011-05-16 14:57) [3]А если без зубоскальства, то:
1. Версия delphi, версия MS SQL.
2. Скрипт на выборку данных.
3. Результаты работы данного скрипта в QA (или в студии).
← →
Соня (2011-05-16 15:09) [4]Ega23 ©
1. Delphi 7, MS SQL Server 2008 R2
2. Скрипта нет. Я просто накидала в DataModule компоненты (ADOConnection, ADOTable, ADODataSet), соединила его с MainForm, на которой добавила DBGrid. Каждый DBGrid связала с DataSet.
5 штук работают, а шестая не работает! Притом запрос на выборку данных из таблицы возвращает непустые значения...
← →
Соня (2011-05-16 15:10) [5]sniknik
>в DBGrid данных нет!!! я знаю, я его использую для отображения данных.
← →
Соня (2011-05-16 15:11) [6]sniknik
> наделал колонок с несуществующими полями? (не наделал, а наделала)
Да я ещё ничего не создавала...
← →
Ega23 © (2011-05-16 15:13) [7]
> Каждый DBGrid связала с DataSet.
C DataSet или с DataSource?
> 5 штук работают, а шестая не работает! Притом запрос на
> выборку данных из таблицы возвращает непустые значения..
Чудес не бывает. Создай отдельный модуль, помести туда Connection и свою 6-ю таблицу, свяжи с ней один DBGrid
P.S.
Не работай с TADOTable, используй TADODataSet.
← →
sniknik © (2011-05-16 15:15) [8]> Да я ещё ничего не создавала...
значит скопипастил.
т.к.
> запрос на выборку данных из таблицы возвращает непустые значения...
то вариантов общем то не осталось.
← →
Соня (2011-05-16 15:16) [9]Ega23
> C DataSet или с DataSource?
Да, sorry :-)
> Создай отдельный модуль, помести туда Connection и свою 6-ю таблицу, свяжи с ней один DBGrid
Хорошо, сейчас буду пробовать. Спасибо за совет :-)
> Не работай с TADOTable, используй TADODataSet
По каким причинам?
← →
sniknik © (2011-05-16 15:17) [10]> помести туда Connection и свою 6-ю таблицу, свяжи с ней один DBGrid
+
помести = создай новые, с панели дельфи, а не копипастом со старого/не рабочего проекта.
← →
sniknik © (2011-05-16 15:18) [11]> По каким причинам?
ну, например, каждый раз спрашивая что-то, тебе будут говорить чтобы не использовал, и т.д. но только не то о чем спрашивал...
как причина? покатит?
← →
Соня (2011-05-16 15:19) [12]С новым модулем то же самое...
← →
Ega23 © (2011-05-16 15:20) [13]
> По каким причинам?
Причин - миллион. Но, боюсь, что тебе ещё рановато, многое не поймёшь.
Впрочем, почему бы и нет?
http://www.delphimaster.ru/searchresults.html?cx=partner-pub-9212733226161585%3Al0c7n49v7kz&cof=FORID%3A9&ie=windows-1251&q=TADOTable&sa=%CF%EE%E8%F1%EA&siteurl=delphimaster.ru%2Fsearch.html#985
← →
Ega23 © (2011-05-16 15:21) [14]
> С новым модулем то же самое...
Давай скрипт на создание таблицы.
Плюс заодно выполни запросselect count(*) from <Имя таблицы>
← →
Соня (2011-05-16 15:24) [15]sniknik ©
>значит скопипастил.
Причём тут это? Я ничего не копировала, а создала новый проект с нуля. Да и создавать тут нечего - только соединение с БД делаю.
← →
Соня (2011-05-16 15:25) [16]Ega23 ©
>тебе ещё рановато
Простите, дяденька, за несвоевременный вопрос :-))
← →
Соня (2011-05-16 15:27) [17]Ega23 ©
select COUNT(*) from Video_Rental_DB.dbo.Genres возвращает число 9, как и должно быть.
← →
Соня (2011-05-16 15:28) [18]Ega23 ©
CREATE TABLE Genres(
Id BigInt IDENTITY PRIMARY KEY,
Title VarChar( 20 ) NOT NULL,
About VarChar( 150 ) NOT NULL );
← →
Соня (2011-05-16 15:29) [19]sniknik ©
> как причина? покатит?
Не смешно.
← →
sniknik © (2011-05-16 15:32) [20]> Не смешно.
не смеюсь.
← →
Ega23 © (2011-05-16 15:34) [21]
> Простите, дяденька, за несвоевременный вопрос :-))
Ничего личного, но:
1. Объяснять почему - это действительно долго, на много страниц обсуждения.
2. Судя по стилю заданного вопроса уровень твой действительно "не ахти".
3. Такие обсуждения минимум раз в полгода возникают, за 8 лет надоело переливать из пустого в порожнее.
4. Ответ на вопрос даст нормальная литература плюс Google
5. Учитывая всё вышесказанное, возникает вопрос: нафига тебя грузить такой информацией, которую ты пока не можешь воспринять (а это - время, а врям - деньги)?
Если тебе действительно интересно, почему, тогда поищи подобные обсуждения, потыкай примеры, поразбирайся сама. И вот тогда, если тебе будет что-то конкретное непонятно - задавай вопрос.
З.Ы. Надо FAQ на эту тему расширить, что-ли...
← →
Соня (2011-05-16 15:34) [22]Ega23 ©
А зачем скрипт и запрос? Мне почему-то кажется, что проблема в соединении с БД...
← →
Ega23 © (2011-05-16 15:35) [23]
> Соня (16.05.11 15:28) [18]
>
> Ega23 ©
> CREATE TABLE Genres(
Права на чтение таблицы есть?
← →
Ega23 © (2011-05-16 15:36) [24]
> А зачем скрипт и запрос? Мне почему-то кажется, что проблема
> в соединении с БД...
Затем, что в таблице могут всякие экзотические типы данных использоваться. А запрос - чтобы убедиться, что записи действительно есть.
← →
Соня (2011-05-16 15:36) [25]Ega23 ©
Спасибо за объяснение :-)
А что по моему вопросу? Есть что-нибудь? :-)
← →
Соня (2011-05-16 15:37) [26]Ega23 ©
> Права на чтение таблицы есть?
Нет, никаких прав нет.
← →
Соня (2011-05-16 15:38) [27]Соня (16.05.11 15:37) [26]
Ega23 ©
> Права на чтение таблицы есть?
Нет, никаких прав нет.
В смысле, что я не указывала никаких ограничений :-) Так что все пользователи могут свободно просматривать эту информацию.
← →
Ega23 © (2011-05-16 15:40) [28]ОК.
1. Новый проект, главная форма.
2. На форму кидаешь TADOConnection, TADODataSet, TDataSource, TDBGrid.
3. В свойствах TADOConnection идёшь на ConnectionString, делаешь всё что нужно. Убеждаешься, что подключение точно к той базе.
3. В TADODataSet устанавливаешь Connection := ADOConnection1, в поле CommandText пишешьselect * from Genres
4. DataSource1.DataSet := ADODataSet1;
5. DBGrid1.DataSource := DataSource1;
6. Без запуска программы идёшь в свойства ADODataSet1 и ставишь Active := True;
← →
Ega23 © (2011-05-16 15:41) [29]
> Ega23 © (16.05.11 15:40) [28]
вдогонку:
Всё делаешь по-честному, без Copy-Paste.
← →
sniknik © (2011-05-16 15:42) [30]> select COUNT(*) from Video_Rental_DB.dbo.Genres возвращает число 9
а RecordSet.RecordCount после запросаselect * from Video_Rental_DB.dbo.Genres
какое число возвращает?
← →
Соня (2011-05-16 15:47) [31]Ega23 ©
Делаю
← →
Соня (2011-05-16 15:50) [32]Я не программно прописываю, я свойства указываю.
← →
Соня (2011-05-16 15:51) [33]Помогло :-)))
Спасибо большое :-)
← →
Ega23 © (2011-05-16 15:51) [34]
> Я не программно прописываю, я свойства указываю.
Да, именно свойства. До программного потом доберёмся, если потребуется.
← →
И. Павел © (2011-05-16 15:51) [35]> [0] Соня (16.05.11 14:48)
Судя по описанию проблемы, кажется, что у вас у Table выставлено в false свойство DefaultDrawing. Тогда таблица действительно будет содержать все записи/поля но они будут пустыми.
← →
Соня (2011-05-16 15:51) [36]Только я не поняла, в чём же моя ошибка была...?
← →
Ega23 © (2011-05-16 15:51) [37]
> Помогло :-)))
> Спасибо большое :-)
Ну вот тебе одна из причин, почему не стоит использовать TADOTable :))))
← →
Соня (2011-05-16 15:55) [38]И. Павел ©
И правда... Наверное, случайно ткнула... :-))))) Глупая...
← →
Соня (2011-05-16 15:55) [39]Всем большое спасибо!!! :-)))))
← →
sniknik © (2011-05-16 16:01) [40]> И правда... Наверное, случайно ткнула... :-))))) Глупая...
два раза... ->
> Причём тут это? Я ничего не копировала, а создала новый проект с нуля. Да и создавать тут нечего - только соединение с БД делаю.
или врун вдобавок.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.005 c