Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.10;
Скачать: CL | DM;

Вниз

Ошибка при использовании 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
6-1236185481
It's not me
2009-03-04 19:51
2011.04.10
Зависание над чтением сокета


2-1293704422
Неважно
2010-12-30 13:20
2011.04.10
Цвет TBitmap


15-1293132611
DVM
2010-12-23 22:30
2011.04.10
Консольное приложение и UAC


15-1293035423
Dimka Maslov
2010-12-22 19:30
2011.04.10
Опять про физику


15-1293039638
TUser
2010-12-22 20:40
2011.04.10
Прожект вечного двигателя