Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 409
от 08.10.2007, 13:35

Администратор:Gh0stik
В рассылке:Подписчиков: 309, Экспертов: 39
В номере:Вопросов: 3, Ответов: 5


Вопрос № 104060: Здравствуйте. Работаю с БД Access и ADO в Delphi 7. Проблема состоит в добавлении в поля MEMO и Тестовое строк, в которых встречаются символы ", : и ещё какие-то, которые являются служебными. Процедура, изменяющая запись в табли...
Вопрос № 104109: Уважаемые эксперты! Помогите пожалуйста исправить ошибку EInvalidGridOperation "Grid index out of range" или ElistError "List index out of bounds(26)", которая возникает в следующей ситуации: есть ADOQuery, которая подсоед...
Вопрос № 104128: Помогите !!! Не могу сделать выборку из таблиц IB так чтоб данные выводились в EDIT и ComboBox С помощью ComboBox можно было бы перемещаться по строкам моей таблицы и выводились данные в EDIT Когда пишу код то выводится только первая ст...

Вопрос № 104.060
Здравствуйте.
Работаю с БД Access и ADO в Delphi 7.

Проблема состоит в добавлении в поля MEMO и Тестовое строк, в которых встречаются символы ", : и ещё какие-то, которые являются служебными.
Процедура, изменяющая запись в таблице - в приложении

Если в data.text1.Text будут символы ", : (может ещё что-то, не знаю) - это воспринимается как ошибка.
Скажите, пожалуйста, как добавить текст с такими символами?

Большое спасибо!

Приложение:

Отправлен: 02.10.2007, 16:41
Вопрос задал: Omickron (статус: 4-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Виктор Пырлик
Здравствуйте, Omickron!

Во первых, не используйте русские обозначения (названия) полей базы данных (таблицы), особо, если собираетесь работать внешними средствами (в данном случае Delphi).

Во вторых, ошибку выдает символ двоеточия : ибо трактуется как параметр всеми компонентами работающими с запросами в Delphi.
Вообще, с memo полями таким образом обычно не работают, ибо их размер велик может быть.
Вот немного подправленный код (приложение - 1) – но он так же выдаст ошибку, если встретится «:».
А вообще, рекомендую использовать иной подход – работать с полями конкретно, это мне кажется с типом memo будет более эффективно (приложение – 2).

Приложение:

---------
Если ничего не помогло - надо читать инструкцию

Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 02.10.2007, 20:27
Оценка за ответ: 5
Комментарий оценки:
В первом случае Вы просто использовали функцию Format и, как правильно заметили, от ошибки с символом : это не убережёт. Кстати, ошибку вызывают не только :, но и ", а, возможно, и другие символы, которые являются служебными. К счастью, я нашёл выход: в таких случаях используют SQL запрос с параметрами. Очень удобная штука. Рекомендую.


Вопрос № 104.109
Уважаемые эксперты!
Помогите пожалуйста исправить ошибку EInvalidGridOperation "Grid index out of range" или ElistError "List index out of bounds(26)", которая возникает в следующей ситуации:
есть ADOQuery, которая подсоединена к DBGrid, в отдельном потоке изменяется текст некоторых столбцов, в нем же для обновления вызывается Requery (часто, несколько раз в секунду). Проблема в том, что при обновлениии рисуются не только число строк с данными, соответствующее запросу SQL, но много пустых строк в конце. Пыталась запретить AutoEdit, но это не помогает. Может сделать отдельную таблицу и просто копировать туда данные из исходной таблицы (вместо SQL-запроса)?
Заранее спасибо.
Отправлен: 03.10.2007, 05:00
Вопрос задала: Ляудинскайте Юлианна (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 18)

Отвечает: Виктор Пырлик
Здравствуйте, Ляудинскайте Юлианна!

1. Пред обновлением запроса - отключайте контролы

ADOQuery1.DisableControls;
{что-то делаем, например..}
ADOQuery1.Requery();
ADOQuery1.EnableControls;


2. В отдельном потоке, при работе с визуальными компонентами, требуется их синхронизация:
Synchronize(<ваша процедура в потоке этом>);

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 03.10.2007, 06:16
Оценка за ответ: 4
Комментарий оценки:
Теория хорошая, но на практике Synchronize() вообще не запускает мой код.

Отвечает: Кэр Лаэда
Здравствуйте, Ляудинскайте Юлианна!

Эта ошибка может возникать при обращении к несуществующим Item'am в данном случае возможно вы пытаетесь обратится к несозданным столбцам, т.е. пытаетесь изменить текст у столбцов которые не созданы, либо вы выходите за диапазон созданных.
---------
Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Практикант)
Ответ отправлен: 03.10.2007, 13:09
Оценка за ответ: 4
Комментарий оценки:
Я обращаюсь к столбцам по имени, поэтому недопустимых ITem\'ов вроде быть не должно


Вопрос № 104.128
Помогите !!!
Не могу сделать выборку из таблиц IB так чтоб данные выводились в EDIT и ComboBox
С помощью ComboBox можно было бы перемещаться по строкам моей таблицы и выводились данные в EDIT
Когда пишу код то выводится только первая строка и ВСЕ!

Procedure TPrixod_Form.MainSpisokSelect_1;
begin
With DataModule1.IBDataSet2 do
Begin
Active := False;
SelectSQL.Clear;
SelectSQL.Add(' SELECT Klaes_Artickl.*');
SelectSQL.Add(' FROM Klaes_Artickl');
SelectSQL.Add(' ORDER BY Klaes_Artickl.ART, Klaes_Artickl.Shtrix');
Active := True;
End;
Spisok;
end;

Procedure Tprixod_Form.Spisok;
Begin
with DataModule1.IBDataSet2 do
begin
suiEdit1.Text := FieldByName('Shtrix').AsString;
suiComboBox5.Text := FieldByName('Nomer_ID').AsString;
While Not Eof do
begin
suiComboBox2.Items.Add(FieldByName('Art').AsString);
suiEdit1.
next;
End;
End;
Отправлен: 03.10.2007, 11:11
Вопрос задал: Кадекин, Александр, Геннадиевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Omickron
Здравствуйте, Кадекин, Александр, Геннадиевич!
Ну так правильно, что выводится одна строка - первая.
Для того, чтобы получить вторую строку, нужно сделать текущей следующую строку в DataSet. Можно просто изменить значение свойства RecNo.
Ответ отправил: Omickron (статус: 4-ый класс)
Ответ отправлен: 03.10.2007, 11:47

Отвечает: Виктор Пырлик
Здравствуйте, Кадекин, Александр, Геннадиевич!

Для того, что бы ваш suiComboBox2 управлял навигацией по набору данных - используйте его метод OnChange. дан пример. если есть вопросы - задавайте.

Приложение:

---------
Если ничего не помогло - надо читать инструкцию

Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 03.10.2007, 12:19
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.10 от 27.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное