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

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.01 c
3-29266
grusty
2004-01-17 16:20
2004.02.10
Как подсчитать количество уникальных записей в таблице?


4-29681
BarlaZ
2003-12-08 07:30
2004.02.10
Как сделать ScreenShot главной формы моего приложения?


3-29233
Vitalik
2004-01-19 14:30
2004.02.10
Добавление строк в таблицу ч/з DBGrid


7-29642
Mr.Nobody
2003-11-25 22:17
2004.02.10
Чтение из com-порта...


1-29454
AlexeyITN
2004-01-29 18:29
2004.02.10
Очень стыдно задавать такое о Combobox-e





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