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

Вниз

Проблема с IBDataSet   Найти похожие ветки 

 
Евген ©   (2004-01-09 12:16) [0]

Уважаемые мастера, возможно мой вопрос покажется элементарным и глупым, но во-первых в IB это мои первые шаги, а во-вторых я над ним мучаюсь уже 4 дня.
Суть:
Есть таблица, созданная следующим запросом:

CREATE TABLE "CATEGORIES"
(
"Id" INTEGER NOT NULL,
"Name" VARCHAR(50) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
"GoodsCount" INTEGER,
CONSTRAINT "PK_Categories" PRIMARY KEY ("Id")
);

(это я практикуюсь по книге "Мир InterBase" Ковязина, Вострикова)
На форме как и положено есть IDDataBase и IBTransaction. База настроена и коннектится. Пытаюсь сделать элементарную выборку из таблицы запросом:
SELECT * FROM CATEGORIES
и в ответ получаю ошибку:
Dinamic SQL Error
SQL error code=-206
Column unknown ID.
Запрс пытаюсь выполнить и на этапе проектирования и в Run-time. Ситуация та же. А вот теперь начинается самое интересное: пытаюсь выполнить тот же запрос с помощью IBQuery и все ОК - вижу данные в Гриде.
Подскажите пожалуйста что это может быть? Может переделать таблицу где все поля именуються большими буквами?


 
Vemer ©   (2004-01-09 12:27) [1]

Какой SQL? SQL3 - регистрозависимый. Может поможет upgrade IBX, есть на Ibase.ru. "COLLATE PXW_CYRL" - может влиять. Какая страница стоит в IBDataBase? Тоже начинающий, использую связку IBQuery + IBUpdateSql. На SQL1 работает замечательно.


 
HSolo ©   (2004-01-09 12:27) [2]

>Пытаюсь сделать элементарную выборку из таблицы запросом
Как именно пытаетесь?


 
Deniz ©   (2004-01-09 12:39) [3]

Если в IBDATASET выполнить запрос select * from CATEGORIES и именно так, без указания полей и т.д., то все будет ОК, но чувствуется где-то проставлено поле ID, на что и ругается "ID" и "Id" это разные поля в 3-диалекте.


 
Евген ©   (2004-01-09 12:49) [4]


> Vemer ©

SQL Dialect 3. Это хорошо что регистрозависимый, только он, собака дикая, переводит имена всех полей к верхнему регистру. Зачем? Как это можно отключить, или придется БД переделывать? Хотелось бы узнать все эти ньюансы чтоб дальше лбом не биться. А с другой стороны IBQuery работает. Можно конечно и так как ты говоришь, но в книге рекомендуется IBDataSet. Хотелось бы изначально "правильно" учиться работать на "Правильных" компонентах.


> HSolo ©

В IBDataSet.SelectSQL на этапе проектирования с помощью мастера вношу текст SELECT * FROM CATEGORIES. На этапе проектирования в свойстве Active меняю false на true или в Run-time выполняется команда CategoriesDataSet.Open;


 
Vemer ©   (2004-01-09 12:52) [5]

Для меня регистрозависимость это плохо. Попробуй COLLATE PXW_CYRL убрать.


 
Евген ©   (2004-01-09 12:56) [6]


> Deniz ©

Да в том то и дело что нигде не проставлены. Я кладу на форму новый компонент, заполняю только самое необходимое и та же ситуация. Более того мастер мне пишет поля так как я их создавал: первая буква большая а остальные маленькие. День назад был глюк Unknuwn Table CATEGORIES (тогда таблица создавалась как Categories). Создал новую БД с таблицей CATEGORIES и таблицу мы уже видим, но поля не видим. Если таблицу и поля нужно большими буквами обзывать - так и скажите, но во всех книгах пишут как Categories.


 
weRUs   (2004-01-09 13:03) [7]

У меня была такая проблема, избавился, когда руками прописал все поля: ID, NAME и т.д.


 
Serg Vostrikov   (2004-01-09 13:20) [8]

Судя по всему ты просто не указал SQLDialect 3 в TIBDatabase. То есть, база сделана в третьем диалекте, а подключаешься ты в первом, вот и грабли.


 
Alex Koviazin   (2004-01-09 13:28) [9]

Серёга, ты неправ !


 
SanLystsov ©   (2004-01-09 14:18) [10]

Попробуйте заменить заголовок столбца на, например "Id1" - будет ли выдаваться та же ошибка? У меня нечто похожее было со столбцами Year и Level - мне кажется, что это какие-нибудь встроенные имена в InterBase"вском расширении SQL. Менял на Year1 и Level1 соответственно.


 
kaif ©   (2004-01-09 14:34) [11]

Что-то я не сталкивался с регистрозависимостью букв в 3-м диалекте.
Ситуация, которую ты описываешь, вообще невозможна.
Что-то недоговариваешь.
Если есть подозрения на диалект и регистрозависимость, попробуй все это создать без кавычек:

CREATE TABLE CATEGORIES
(
Id INTEGER NOT NULL,
Name VARCHAR(50) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
GoodsCount INTEGER,
CONSTRAINT PK_Categories PRIMARY KEY (Id)
);

Потом если
SELECT * FROM CATEGORIES
не заработает,
значит у меня это должно было не работать уже 10000 раз.


 
Евген ©   (2004-01-09 14:37) [12]

Точно, Серега не прав. Тем более что по умолчанию там стоит 3-й диалект.

До вчерашнего дня была проблема с таблицами: я создавал таблици с именами как в книге "Categories" и "Goods". Через IBConsole их вижу а запрос сделать немогу - пишет что не может найти таблицу CATEGORIES (напомню, что запрс был select * from "Categories"). Сегодня я переделал базу с таблицами "CATEGORIES" и "GOODS". Таблицы теперь находятся, а поля нет. Может стоит переделать базу и с именами полей в верхнем регистре?

2 All>
Хотелось бы услышать авторитетное мнение по поводу необходимости создавать таблици, поля и т.д. с именами в верхнем регистре.


 
kaif ©   (2004-01-09 14:42) [13]

Не знаю, насколько мое мнение может быть авторитетным, но мне кажется, что во избежание путаницы, рассчитывать на регистрозависимость - не лучший путь.
Я лично просто нигде не использую кавычек, русских названий полей и т.п. вещей.
Насчет верхнего или нижнего регистра скажу так. Это дело вкуса. Я лично все таблицы создаю в верхнем регистре. Тексты хранимых процедур иногда создаю в нижнем (так читабельнее). Запросы на стороне клиента лучше смотрятся, если они записаны маленькими буквами. Если не употреблять кавычки, пробелы и использовать только английские идентификаторы - проблем не возникает.


 
Евген ©   (2004-01-09 14:47) [14]


> kaif ©

Я наоборот стараюсь описать ситуацию наиболее подробно. Может я где-то и совершаю ошибку, даже скорее всего. И мне очень кажеться что это самая примитивнейшая и позорнейшая ошибка. Но я повторюсь. Интербейс я только начинаю изучать. Изучаю по книге порекомендованной в этом же форуме. Буду рад любой информации и ссылкам на нее.


> SanLystsov ©

У меня есть рабочая БД с полем ID и никаких вопросов не возникало.


 
Term ©   (2004-01-09 15:44) [15]

а может всё проще, и дело не БД, а в кривых руках, или не внимательности. Если IBQuery возвращает набор то причём тут БД???
Мне кажется он одно из свойств TIBDataSet неверно прописал, я имею ввиду RefreshSQL,UpdateSQL и DeleteSQL? может тут стоит посмотреть, а для верности сформировать их с помошью
DataBase Editor...


 
Евген ©   (2004-01-09 16:13) [16]

Спасибо всем кто откликнулся! давайте подведем итоги:
1. Сделал новую БД с именами таблиц и полей в верхнем регистре и все ОК.
2. Наверное все-таки нужно и дальше так делать БД (я имею ввиду регистр).
3.
> Term ©
Не спорю, может и так, только после создания новой БД (см. п. 1) я в свойствах IBDataSet ничего не менял, исправил только имя БД.

2 All Кто-нить пользовался компонентами FIBPlus? Как впечатления. Хотел бы их для себя купить, кто подскажет сколько стоит (а то не залезть на www.devrace.com - че-то с сервером)? Или может стоит пользоваться IBX и не париться?

Еще раз спасибо всем откликнувшимся.


 
Term ©   (2004-01-09 16:16) [17]


> стоит пользоваться IBX и не париться

вполне, нормальное решение


 
Евген ©   (2004-01-09 16:30) [18]

Появился новый глюк: на этапе проектирования при установку значения IBDataSet.SelectSQL в true в Гриде вижу данные, в Run-time при выполнении команды CategoriesDataSet.Open вылетает та-же ошибка (Типа неизвестный столбец ID). CategoriesDataSet.Active:=true - тот же результат.

А собственно в чем разница если я "руками" открываю запрс и в Run-time?


 
Евген ©   (2004-01-09 17:05) [19]

Сорри, это я старую базу в ини файле оставил. Вроде все работает.


 
Yumata   (2004-01-16 21:20) [20]

Я пользуюсь FIBPlus уже год (сразу после Ковязина и начал!) и
ничего другого не пробовал - результат - сетевая версия автовокзала в Магнитогорске работет без сопровождения с мая 2003. Правда на Yaffil. У меня есть FIBPlus 4.81 для Delphi6, но работает и с 7. Весит 1.8 мег. Могу кинуть на мыло.



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

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

Наверх




Память: 0.52 MB
Время: 0.026 c
3-29234
Pako
2004-01-19 11:58
2004.02.10
Select


3-29248
Vic
2004-01-19 10:26
2004.02.10
Список таблиц access


3-29255
Burafchick
2004-01-18 22:51
2004.02.10
Как установить QReport в Delphi 7


4-29668
S@shka
2003-12-04 12:36
2004.02.10
Опять же сообщения


1-29352
КомофОнСамый
2004-01-28 20:04
2004.02.10
прочитать версию о файле