Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не понятные ошибки при работе с БД [D7]


JEK2 ©   (2006-02-08 21:32:00) 

Объясните что не правильно делаю
в Table1 прально указана DatabaseName, TableName, TableType, база с таблицей есть, алиас прописан.
У DataSource1 DataSet выставлено в Table1
DBGrid отображает таблицу нормально
У Query1  DataSource стоит - DataSource1, DataSet как Table1


procedure TForm1.Button1Click(Sender: TObject);
begin
 Query1.Close;
 Query1.SQL.Clear;
 Query1.SQL.Add('SELECT * FROM B_ALL.DB');
 Query1.SQL.Add('WHERE GOR = '+Edit1.Text);
 Query1.Open;
end;

при запросе вылетает ошибка, в чем дело?
Project Project.exe raized excetion class EDBEngineError with message 'Invalid field name TEST'.
слово TEST ввожу в Edit1.text
кодировка таблицы OEM_CHARSET, у Edit1.text OEMConvert=TRUE


JEK2   (2006-02-09 20:54:00) [1]

>Плохиш ©   (08.02.06 23:26) [8]
>Кодировку базы данных обычно указывают в драйверах, используемых для >подключения, которые судя по вопросу являются военной тайной.

Я как будто вопрос задал понятнее некуда :)
Как данные из Edit1.Text преобразовать в кодировку OEM_CHARSET перед передачей Query1!!!
У Edit1.text OEMConvert=TRUE -не помогает :(
Разве из вопроса не понятно что кодировка базы именно такая?
B_ALL.DBF имеет старую DOS кодировку OEM, чтоб данные в гриде смотреть не абракадаброй, вынужден использовать тоже OEM_CHARSET


Плохиш   (2006-02-08 23:26:00) [2]

Кодировку базы данных обычно указывают в драйверах, используемых для подключения, которые судя по вопросу являются военной тайной.


JEK2   (2006-02-08 22:57:00) [3]

>Плохиш
А строка Query1.Params[0].AsString:=Edit1.Text; значится вопросов не вызывает?

Вызывала, разобрался с параметрами, только и такой запрос
Query1.SQL.Add('WHERE GOR = "'+Edit1.Text+'"');
и такой
Query1.SQL.Add('WHERE GOR=' + QuotedStr(Edit1.Text));
практически одно и тоже, но дело не в этом, а в!!!

Как Edit1.Text преобразовать в кодировку OEM_CHARSET перед передачей Query1, ну не получается у меня никак :(((


Плохиш   (2006-02-08 22:38:00) [4]


> JEK2   (08.02.06 22:14) [4]
> >Desdechado
> переведите если не затруднит строку 'WHERE GOR = :P1'
> :P1 что это означает?

А строка Query1.Params[0].AsString:=Edit1.Text;значится вопросов не вызывает?

> Query1.SQL.Add('WHERE GOR = "'+Edit1.Text+'"');

Query1.SQL.Add('WHERE GOR=' + QuotedStr(Edit1.Text));


JEK2   (2006-02-08 22:25:00) [5]

По большому счету всего лишь надо данные из Edit1.text преобразовать в кодировку OEM_CHARSET перед передачей Query1
Query1.SQL.Add('WHERE GOR = "'+Edit1.Text+'"');
Помогите а, запарился однако :(


JEK2   (2006-02-08 22:14:00) [6]

>Desdechado
переведите если не затруднит строку 'WHERE GOR = :P1'
:P1 что это означает?


Desdechado   (2006-02-08 22:09:00) [7]

Query1.SQL.Add('WHERE GOR = :P1');
Query1.Params[0].AsString:=Edit1.Text;


JEK2   (2006-02-08 22:06:00) [8]

>Virgo_Style ©   (08.02.06 21:53) [1]
>У тебя нет поля Test в таблице.
Это и ежу понятно :)

Я ищу в поле GOR как видно из запроса
Query1.SQL.Add('WHERE GOR = '+Edit1.Text);

Вобщем вся проблема похоже в том, что B_ALL.DB я создал с помошью Datapump из B_ALL.DBF
B_ALL.DBF имеет старую DOS кодировку OEM ,вобщем как то надо при запросе к таблице данные из Edit1.Text тоже как то преобразовать в OEM_CHARSET, иначе удачи не видать :) только вот вопрос как


Virgo_Style   (2006-02-08 21:53:00) [9]

У тебя нет поля Test в таблице.
А строковые константы - они в кавычках должны быть.


Наверх

Титульная страница Поиск, карта сайта Написать письмо