Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к ячейкам БД через DataSource 
:(
    Опции темы
WDimon
Дата 5.12.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.12.2007

Репутация: нет
Всего: нет



Hi.

Столкнулся с проблемой : не могу добраться к необходимой ячейки таблицы базы данных (сделана с помощью Датабазе Десктоп, формат Парадокс 7)  через датусурс.

Вообще я смог реализовать алгоритм доступа с помощью DBGrid  + DBText - и уже из DBText вытаскиваю необходимые значения. Однако, знакомый бородадый дядько-одмин назвал меня нупом за такую реализацию и послал на этот форум smile 
Естественно, я согласен что добираться до необходимой ячейки через визуальный интерфейс немного неоптимально smile Поэтому вопрос- как можно добраться до необходимой ячейки, используя Датасурс (ну или ДатаСет)? Например у меня таблица 5х5, нужно выбрать все значения из ячеек 4 столбца (цикл оформить смогу smile ).
PM MAIL   Вверх
Nat
Дата 5.12.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 16.4.2007

Репутация: нет
Всего: нет



Ммм, через Query не пробовал?
PM MAIL   Вверх
WDimon
Дата 5.12.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.12.2007

Репутация: нет
Всего: нет



В том-то и дело, что нам по заданию сказали пока не юзать Квери.
PM MAIL   Вверх
Fazil6
Дата 5.12.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



Код

Edit1->Text = CustTable->Fields->Fields[0]->AsString;

PM MAIL   Вверх
WDimon
Дата 5.12.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.12.2007

Репутация: нет
Всего: нет



Ща буду пробовать.
Еще вопрос. Как сделать так, чтобы в эксешник включались все необходимые для работы библиотеки и модули - а то прога не идет на компах, где не стоит Билдер. И если я могу какие-то библиотеки принести вместе с эксешником, то сейчас при запуске эксешник жалуется на отсутствие движка баз данных Борланда и в итоге прогга хоть и запускается, но подключаемые базы данных там не отображаются.

И есть ли такой параметр у Table, который показывает сколько записей (строчек) в таблице?

Это сообщение отредактировал(а) WDimon - 5.12.2007, 20:06
PM MAIL   Вверх
Fazil6
Дата 5.12.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: нет
Всего: 60



Цитата(WDimon @  5.12.2007,  19:40 Найти цитируемый пост)
И есть ли такой параметр у Table, который показывает сколько записей (строчек) в таблице?

TTable::RecordCount

PM MAIL   Вверх
WDimon
Дата 5.12.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.12.2007

Репутация: нет
Всего: нет



1)То есть можно использовать так:

while (j < Table1->RecordCount) {...}

???

2) И еще вопрос - у меня сейчас при запуске ветки программы ( в которой пробегается таблица и из нее выдергиваются координаты, по которым строятся окружности) возникает ошибка:
 Project Project1.exe raised exception class ERangeError with message ". Process stopped. Use Step or Run to continue

указатель помещается в строку ThrowIfOutOfRange(idx);   // Should Range-checking be optional to avoid overhead ?? (файл dstring.h)

В чем может быть дело? Я подозреваю виноват какой-то из моментов переприсваивания значений.

Код

#include <string>
#include <stdlib.h>
#include <math.h>

void __fastcall TForm4::Button22Click(TObject *Sender)
{float k = (Form3->PaintBox1->Height)/10;
 float l = (Form3->PaintBox1->Width)/10;
 AnsiString TempString;
 AnsiString CoorX;
 AnsiString CoorY;
 int X=0;
 int Y=0;
 //char temp='';
 int i=0;
 int j=0;
 bool b= false;

for (i=0;i<Table1->RecordCount;i++)
{TempString=Table1->Fields->Fields[5]->AsString;
 bool b = false;
for (int j = 0; j < TempString.Length()+1; j++)
  {
  if (TempString[j] == 'x')
     {
    b = true;
    continue;
     }
  if (b == false) CoorX += TempString[j];
  else CoorY += TempString[j];
  }
X=atoi(CoorX.c_str());
Y=atoi(CoorY.c_str());
Form3->PaintBox1->Canvas->Ellipse(floor(X*l),floor(Y*k),floor(X*(l+1)),floor(Y*(k+1)));
Table1->Next();
};

}


Это сообщение отредактировал(а) WDimon - 6.12.2007, 07:18
PM MAIL   Вверх
Nat
Дата 6.12.2007, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 16.4.2007

Репутация: нет
Всего: нет



Код

CoorX += TempString[j];


По-моему, конкатенация так не работает. У вас CoorX - AnsiString, TempString[j] - char. А "+"  - только для AnsiString.

Что касается переноса на другие компы: кажется, в FAQе рассказывается как надо менять для настройки проекта и как создавать на другом компе новый источник данных (Панель управления->BDE Администратор  и Панель управления->Администрирование->источники данных(ODBS)) Рекомендую использовать ADO и MS Access, там дополнительно настраивать ничего не нужно.
PM MAIL   Вверх
WDimon
Дата 6.12.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.12.2007

Репутация: нет
Всего: нет



Цитата(Nat @  6.12.2007,  09:14 Найти цитируемый пост)
По-моему, конкатенация так не работает. У вас CoorX - AnsiString, TempString[j] - char. А "+"  - только для AnsiString.

Как тогда быть?
PM MAIL   Вверх
Ma_s_ik
Дата 26.3.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.3.2008
Где: Брест, Беларусь

Репутация: нет
Всего: нет



Вместо
Код

CoorX += TempString[j];

пиши
Код

CoorX += TempString.c_str()[j];

PM MAIL ICQ   Вверх
Zenkor
Дата 5.5.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.5.2008
Где: Краснодар

Репутация: нет
Всего: нет



2Вопроса как раз по таким же базам.в базах новичок совсем- пока студент всего лишь)
1.При попытке изменения чего либо в базе в некоторых случаях вижу Dataset not in edit or insert mode
Как его в этот инсерт мод поставить?
//ReadOnly где только можно фолс стоит
2.Как вставить елемент в таблицу после последнего элемента?
PM MAIL ICQ   Вверх
Rodman
Дата 6.5.2008, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122




M
Rodman
Модератор: Пожалуйста, один топик - один вопрос.
Создайте свой топик!

PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.1042 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.