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

Вниз

Непонятки с добавлением Interbase   Найти похожие ветки 

 
overword   (2004-02-24 17:59) [0]

Пробую создавать базу. База примитивна - PK MIME_ID с генератором и поле MIME_NAME с индексом (не уникальным, хотел сделать уникальным - IB поругался, кстати, почему - не знаю).
Задача функции - получить код по значению, если значения нет - создать и вернуть таки код.
Так вот Locate у меня не работает! Создает массу пустых строк ((.
Что я мог не так сделать?
С IB работаю первый день (.

with tbMimes do begin // tbMimes: tIBDataSet
if not Locate("MIME_NAME",DataStr,[loCaseInsensitive])
  then begin
    Insert;
    FieldByName("MIME_NAME").AsString:=DataStr;
    Post;
  end;
result:=FieldByName("MIME_ID").asInteger;
end;

tbMimes:
SelectSQL = select * from MIMES
InsertSQL = insert into mimes (MIME_ID, MIME_NAME) values (:MIME_ID, :MIME_NAME)


 
Johnmen ©   (2004-02-24 18:07) [1]

Обычно читают книги, вникают, пробуют. А потом задают вопросы здесь.
М.б. ты гениален и тебе достаточно 1 (!) дня для освоения, но судя по вопросу, это не так...


 
Johnmen ©   (2004-02-24 18:11) [2]

Да, и еще здесь
http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
overword   (2004-02-24 18:13) [3]

Уважаемый johnmen! Если Вы такой умный и опытный, то не проще ли сказать, что я не так сделал? Я поискал по форуму, по электронному учебнику. Не нашел, решил спросить более опытных людей.
Немного некорректная формулировка в исходном вопросе - при последовательном добавлении двух пустых строк Locate не находит вторую, хотя в базе она появляется.


 
Johnmen ©   (2004-02-24 18:19) [4]

И вторую и третью и т.д. не найдет. Потому, что их нет. Нет их в наборе данных !


 
Johnmen ©   (2004-02-24 18:22) [5]

Еще полезная ссылка, которую ты просмотрел
http://www.delphimaster.ru/vopros/index.html


 
Sandman25+1   (2004-02-24 18:23) [6]

Поле в БД имеет тип CHAR? Если добавляются пустые строки, значит, идет поиск пустых строк. Но пустые строки в поле типа CHAR при записи преобразуются в строку из одного пробела. Если я ничего не путаю...


 
Соловьев ©   (2004-02-24 18:28) [7]

А не прощке ли ХП создать?


 
Johnmen ©   (2004-02-24 18:35) [8]

>Соловьев ©   (24.02.04 18:28) [7]
>А не прощке ли ХП создать?

Проще (и правильней) - индекс уникальный.


 
Соловьев ©   (2004-02-25 09:50) [9]

Задача функции - получить код по значению, если значения нет - создать и вернуть таки код.

Я так понял ему функция нужна...
Ну если уникальность то индекс, конечно...


 
overword   (2004-02-25 10:24) [10]

2 Johnmen
"Нет их в наборе данных !" - разве после выполнения Open для IBDataSet не открывается набор данных, описанный в SelectSQL? И зачем тогда нужно свойство BufferChunks? Получается, что нет.

2 Sandman25
Нет, добавляются именно пустые строки - проверял.

Индекс уникальный создал таки, но проблема в том, что я не понимаю, почему Locate не ищет. Что нужно вызвать кроме Open, чтобы открыть базу? Или после каждого добавления надо перевызывать Open?
Пока сделал через два SQL-запроса - один ищет запись, другой добавляет. Но ведь можно же сделать это проще, быстрее и правильнее?


 
Zacho ©   (2004-02-25 10:37) [11]

Если Locate запись не нашел, то такой записи в НД нет, и все. Потрассируй, посмотри, что у тебя в DataStr и действительно ли есть запись с таким значением поля "MIME_NAME".
А на самом деле при наличии уникального индекса тебе эта функция вообще не нужна. Достаточно обработать ошибки.



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

Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
6-1074228988
MasterA
2004-01-16 07:56
2004.03.28
Сетевые протоколы


3-1077714830
adias
2004-02-25 16:13
2004.03.28
Целостность и транзакция


7-1072716979
Номолос
2003-12-29 19:56
2004.03.28
Ещё разок про память в процессах


4-1073668179
кукарача
2004-01-09 20:09
2004.03.28
процессы и treeview


3-1078141417
Saris
2004-03-01 14:43
2004.03.28
Добавление степеней в DBGrid





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