Форум: "Начинающим";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];
ВнизОшибка при использовании TRxMemoryData Найти похожие ветки
← →
mefodiy (2011-01-09 22:54) [0]При использовании кода, приведенного далее, получаю ошибку
"Access violation..." после добавления 3-й строки
TempTable: TRxMemoryData;
ADQuery1: TADQuery;
procedure TForm1.Button1Click(Sender: TObject);
begin
with TempTable do
begin
with FieldDefs do
begin
Clear;
Add("F1", ftString, 8,False);
Add("F2", ftString, 50,False);
...
end;
Open;
end;
with ADQuery1 do
begin
Close;
SQL.Clear;
SQL.Add("SELECT F1,F2,... FROM MyTable ORDER BY F1");
Open;
First;
while not Eof do
begin
TempTable.Append;
TempTable.FieldByName("F1").AsString := FieldByName("F1").AsString;
TempTable.FieldByName("F2").AsString := FieldByName("F2").AsString;
...
TempTable.Post;
Next;
end;
Close;
end;
end;
Что делаю не так?
Спасибо.
← →
sniknik © (2011-01-09 23:47) [1]> Что делаю не так?
вообще все... т.е. сама по себе передача данных из одного датасета в памяти, в другой датасет памяти никакого смысла не имеет.
остальное видимо карма... в чем именно неважно, может данные не поддерживаемые типа нил встретились или еще чего.
вот закоментарь передачу всех полей кроме первого, поменялось что то?
← →
Amoeba_ (2011-01-10 01:53) [2]Чисто техническое замечание по коду.
Вместо такого
SQL.Clear;
SQL.Add("SELECT F1,F2,... FROM MyTable ORDER BY F1");
Open;
First;
необходимо и достаточно
//SQL.Clear;
//SQL.Add("SELECT F1,F2,... FROM MyTable ORDER BY F1");
SQL.Text := "SELECT F1,F2,... FROM MyTable ORDER BY F1";
//раз запрос в одну строку, то сразу используем это св-во
Open;
//First; Это лишнее, т.к. и так окажемся на 1-й записи
← →
Германн © (2011-01-10 02:44) [3]
> Amoeba_ (10.01.11 01:53) [2]
> раз запрос в одну строку, то сразу используем это св-во
???
Запрос "не в одну строку" - это только вариант написания кода.
Свойство SQL.Text следует использовать по возможности всегда.
Хотя я в этом не уверен.
← →
mefodiy (2011-01-10 08:22) [4]1. После проверки оказалось, что код в D7 нормально работает. Ошибка выдается в D2010. Из-за чего это может быть?
2. Откуда возникла необходимость? В D7 я использовал как временную таблицу для редактирования данных в DBGrid dbf-файл. Возникла необходимость перехода на юникод. dbf-файлы юникод не поддерживают, поэтому решил использовать RxMemoryData.
← →
Плохиш © (2011-01-10 10:14) [5]
> Возникла необходимость перехода на юникод. dbf-файлы юникод
> не поддерживают, поэтому решил использовать RxMemoryData.
Кто на ком лежал?
> Ошибка выдается в D2010. Из-за чего это может быть?
Неужели из d2010 убрали отладчик?
← →
mefodiy (2011-01-10 11:10) [6]Делал по такой схеме:
С помощью Query считывал данные из MySQL, на компьютере пользователя создавал временный dbf-файл, закачивал туда append-ом все строки. Пользователь вводил или корректировал данные в DBGrid-е, а затем я также построчно считывал информацию из dbf-файла и корректировал данные в таблицах MySQL.
Из-за перехода на D2010 возникла проблема с юникодом. Но, кажется, RxMemoryData тоже не поддерживает юникод (это я выяснил только-что).
Что посоветуете ипользовать? Может есть компоненты dbf с юникодом?
Или использовать что-то дркгое вместо dbf?
← →
RWolf © (2011-01-10 11:23) [7]kbmMemTable, как вариант.
← →
mefodiy (2011-01-10 11:29) [8]
> kbmMemTable, как вариант.
1. Поддерживает ли он юникод?
2. Есть ли вариант для D2010?
3. Где взять?
← →
Дмитрий Белькевич (2011-01-11 00:00) [9]На все вопросы, думаю, ответит гугл. Только, думается, нет особенного смысла тянуть в проект мемдатасет - а разбираться с редактированием мускла непосредственно в гриде, если сильно нужно.
← →
sniknik © (2011-01-11 02:00) [10]блин, вечные "велосипеды", вечные поиски "чудодейственных" компонент...
разберитесь уже с тем, что используете, без метаний. изучайте ADO раз начали использовать... это все что тут нужно. и позволяет обойтись без бессмысленных "перекладываний" из одного в другое.
> Возникла необходимость
честное слово, как только в вопросах возникает эта фраза, так сразу мысль - единственная необходимость тут в программисте, а не дворнике за клавиатурой.
и вовсе тут не недостаток знаний причина (чем "оправдываются" новички), а нежелание их получать... хотят не учится, а получить готовый рецепт, по мышлению дворника "дайте инструмент, буду работать", а если инструмент сложноват то "дайте другой, тогда буду работать"... а научится, разобраться? мануалы почитать, возможности по изучать?
> если сильно нужно.
в любом случае. и не в гриде, а "вообще".
"заваривая" кашу из десятка технологий, ни в одной нормально не разберешься, да и ошибок/кривизны, в которой после черт ногу сломит, наделаешь с гарантией.
← →
Anatoly Podgoretsky © (2011-01-11 11:26) [11]> sniknik (11.01.2011 02:00:10) [10]
Кремлевскую таблетку нужно, съел и все здорово.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c