![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с кириллицей [D6, IB6.x]
Elast © (2004-08-03 22:26:00)Уважаемые мастера! У меня получилось сделать приложение в котором в БД не записывается кириллица. Этот же код работает в других приложениях давно и
исправно.
Подробности: БД FB1.5, CharSet Win1251 есть. Создана в IBExpert.
CREATE DOMAIN TName VARCHAR(240);
CREATE DOMAIN TIdent INTEGER NOT NULL;
/*=============================================================*/
CREATE TABLE Master (Id_Master TIdent,
NameMaster TName);
ALTER TABLE Master ADD PRIMARY KEY (Id_Master);
Используется dbExpress - sqlDataSet, DataSetProvider, ClientDataSet.
procedure TfrmMain.bbSaveClick(Sender: TObject);
begin
if (cdsMaster.ApplyUpdates(0) > 0) then begin
ShowMessage ('Ошибка сохранения данных');
Exit;
end;
end;
procedure TfrmMain.dspMasterBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
var SQL : string;
Id_MS : integer;
Connection : TSQLConnection;
begin
Connection := (SourceDS as TCustomSQLDataSet).SQLConnection;
case UpdateKind of
ukModify : begin
SQL := '';
Id_MS := DeltaDS.FieldByName('Id_Master').NewValue;
if not VarIsEmpty(DeltaDS.FieldByName('NameMaster').NewValue) then begin
if SQL <> '' then
SQL := SQL + ', ';
SQL := SQL + Format('NameMaster = %s',
[QuotedStr(DeltaDS.FieldByName('NameMaster').NewValue)]);
end;
if SQL <> '' then begin
SQL := Format('UPDATE Master SET %s WHERE ID_Master = %d',
[SQL, Id_MS]);
Connection.Execute (SQL, nil, nil);
Здесь ошибка, (если FieldByName('NameMaster').NewValue = кириллица)
arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets
end;
end;
end;
Applied := True;
end;
Если в IbExpert вручную изменить запись или запустить соответствующий скрипт,
то кириллица принимается.
Вопрос - откуда все это?
Elast (2004-08-03 23:51:00) [21]В соседней (моей) проге вполне все понимает и работает.
Johnmen (2004-08-03 23:47:00) [22]>Спасибо за универсальный совет, но это другой случай.
Т.е. там нет решения для тебя ?
>но это другой случай. Какой?
Вопрос викторины ? :)
Ответ - этот случай дбекспресс со своим айбишным драйвером, который не понимает кодировки и/или третьего диалекта.
Elast (2004-08-03 23:42:00) [23]Спасибо за универсальный совет, но это другой случай. Какой?
Johnmen (2004-08-03 23:16:00) [24]http://www.ibase.ru/devinfo/ibrusfaq.htm