Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2013, 12:58   #1
Kabardinka
Новичок
Джуниор
 
Регистрация: 16.04.2013
Сообщений: 3
Печаль Работа с dbf в BorlandDelphi7

Есть таблицы с данными *.dbf. Мне нужно их открыть, прочитать и поместить данные в ячейки SG (типа StringGrid). Проблема с открытием файла.
Строго не судите) Пытаюсь научиться работать с картами-ShapeFile'ми) В программировании совсем новичок) Для сборки проекта понадобится компонент TMap (Компонент с офсайта).
Вложения
Тип файла: rar аналог_новый.rar (465.3 Кб, 10 просмотров)

Последний раз редактировалось Kabardinka; 16.04.2013 в 13:04.
Kabardinka вне форума Ответить с цитированием
Старый 16.04.2013, 13:28   #2
netpolice
Форумчанин
 
Аватар для netpolice
 
Регистрация: 14.02.2013
Сообщений: 222
По умолчанию

А где сама БД-шка?

Цитата:
В программировании совсем новичок
Для новичка у Вас довольно сильное понимание ООП...
netpolice вне форума Ответить с цитированием
Старый 16.04.2013, 14:03   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Kabardinka, по сути вопроса.
Уж что-что, но чтение стандартного DBF - это точно не проблема
начиная с того, что DBF файл имеет достаточно простую и легко читаемую/поддерживаемую структуру (нет проблем читать файл напрямую),
и заканчивая множеством компонент, которые обеспечивают доступ к DBF файлу.
Так же не забывайте, что читать DBF файл можно посредством источников данных (провайдеров) как встроенных в Windows (через MS JET), так и бесплатных, устанавливаемых дополнительно (например,бесплатный MS OLE DB Provider for Visual FoxPro).

Для начала поиском воспользуйтесь. Останутся вопросы - пишите, будем сообществом разбирать...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.04.2013, 13:15   #4
Kabardinka
Новичок
Джуниор
 
Регистрация: 16.04.2013
Сообщений: 3
Восклицание Не догоняю..

Хм. Решила поэкспериментировать для начала с ADO. Но знаний не хватает) Не хватает понимания) Вроде с базой коннект есть. Вроде запрос должен бы по идее выполниться. Но я не вижу результата в DBGrid1.
Kabardinka вне форума Ответить с цитированием
Старый 18.04.2013, 13:25   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

AdoQuery /AdoDataSet должно быть связано с DBGrid

обычно это делают так.
Кидаем на форму ADOQuery (или ADODataSet) - (пусть это будет ADOQuery1)
настраиваем соединение, параметры запрос и т.д. и т.п.
дальше кидаем на форму TDataSource (пусть это будет DataSource1)
в нём в поле DataSet выбираем наш ADOQuery1
потом кидаем на форму DBGrid, в поле DataSource выбираем DataSource1
делаем ADOQuery1.Active - true (для проверки в DesingTime, или запускаем программу и в ней делаем открытие ADOQuery1)
если всё сделано верно - получаем данные в DBGrid1.


код не смотрел. мне тут скачать 12 Мб, чтобы посмотреть, что у Вас не так, затруднительно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.04.2013, 16:49   #6
Kabardinka
Новичок
Джуниор
 
Регистрация: 16.04.2013
Сообщений: 3
По умолчанию

PHP код:
procedure TForm1.Action1Execute(SenderTObject);
var
 
nameDB:WideString;
 
TableNameLongTableName:WideString;
 
ConStr:WideString;
 
i:integer;
 
currTPShapeList;
 
newcurrTPShapeList;
 
SqlStrstring;
begin
   
try
    if 
OpenDialog1.Execute then
     begin
      nameDB
:=OpenDialog1.FileName//полный путь к файлу *.shp
      
shp:=CoShapefile.Create//работаем с картой
      
shp.Open(OpenDialog1.FileName,nil);
      
Map1.Focused;
      
curr:=head// указатель на первый элемент списка
      
while curr <> nil do
      
begin
        n
:=n+1;
        
curr:=curr^.next// указатель на следующий элемент
      
end;
      new(
newcurr); // выделить память для элемента списка
      
newcurr^.NumLayer:=Map1.AddLayer(shp,true);
      
newcurr^.next:=nil;
      if 
head=nil then
      begin
        head
:=newcurr;
        
last:=head;
      
end
      
else
      
begin
        last
^.next:=newcurr;
        
last:=newcurr;
      
end;
      
map1.ShapeLayerFillColor[newcurr^.NumLayer]:=clblack;
      for 
i:=0 to shp.NumShapes-do
       
begin
        
//ListBox1.Items.Add(shp.CellValue[2,i]);
           
Map1.ShapeFillColor[newcurr^.NumLayer,i]:=RGB(RandomRange(1,255),RandomRange(1,255),RandomRange(1,255)); //рисуем карту на объекте TMap
       
end;
      
Map1.ShapeLayerLineColor[newcurr^.NumLayer]:=clRed;
      
Map1.ZoomToMaxExtents;
      
Map1.SendMouseMove:=True;
      
Map1.SendSelectBoxDrag:=True;
      
Map1.SendMouseDown:=True;
      
Map1.SendMouseUp:=True;
      
Map1.SendSelectBoxFinal:=True;

// начинаем работать с базой

       
TableName:=ChangeFileExt(ExtractFileName(OpenDialog1.FileName),''); //имя базы без пути и расширения
       
LongTableName:=Copy(nameDB,1,Length(nameDB)-3)+'dbf'//полный путь к *.dbf
       
ADOQuery1.Active:=False;  ADOConnection1.Close;
       
ConStr:=ADOConnection1.ConnectionString+';DataSource='+LongTableName;
       
ADOConnection1.ConnectionString:=ConStr;
       
ADOConnection1.Open;
       
ADOQuery1.SQL.Clear;
       
SqlStr:='SELECT * FROM ['TableName ']';
       
ADOQuery1.SQL.Add(SqlStr);
       
ADOQuery1.Active:=True;
      
ADOConnection1.Close;
     
end;
   
except
    on e
:Exception do
     
//для отладки на будущее
   
end;
end
Все связала, как было описано выше. Все собирается, прогоняется, но результата не вижу.
Kabardinka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа в С# с dbf Demonmov Общие вопросы .NET 0 20.09.2010 18:48
Работа с таблицами dbf b.grigorev БД в Delphi 16 21.04.2010 09:51
и снова работа с dbf cherry25 БД в Delphi 4 26.02.2009 13:28
Работа с DBF в Делфи Yuran БД в Delphi 20 26.07.2008 14:50