Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.005 c
4-1247134941
istok20
2009-07-09 14:22
2011.04.10
CreateProcessAsUser error


2-1289225632
RWolf
2010-11-08 17:13
2011.04.10
Масштабирование иконок в TToolbar при смене DPI


2-1294996934
12
2011-01-14 12:22
2011.04.10
Error creating variant or safe array. Из-за чего?


15-1292924463
12
2010-12-21 12:41
2011.04.10
Вот бы еще чего посмотрел - столкновение галактик.


15-1291411633
Nic
2010-12-04 00:27
2011.04.10
Недорогой телефон с сенсорным экраном





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский