imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 25.01.2006, 16:20     # 1
kilroy
Guest
 
Сообщения: n/a

Delphi,Access...

значит для начала немного опишу прогу....
Называецо защищенный докуметооборот...аля клиент,сервер.В котором имеецо БД(Access).
Скрестил ацес и дельфи.delphi v7,Access 2003.через ADO.
Вот собстевнно и начались проблемы....
1ая - он почему то совсем не отображет свойства полей,маски и т.д.Просто тупая таблица с добавлением,изменением,удалением.
ну дык это еще цветочки...
2ая - для чего собсно нужно БД?!...Вот,прога должна сканить допустим из такой то директории документы и заносить их в БД.
как енто организовать?При чем она должна в себя занисить дату последнего изменения,владелец документа....и месторасположение документа.
(кто чего не понял...спрашивайте!)
 
Старый 25.01.2006, 16:40     # 2
AZBuka
Newbie
 
Аватар для AZBuka
 
Регистрация: 04.08.2005
Адрес: Дзержинск
Сообщения: 27

AZBuka Путь к славе только начался
1.
Ты хочешь, чтобы через ADO можно было еще и в конструктор таблицы входить ? Могу ошибиться, но это вряд ли. Сходи на www.delphikingdom.ru может кто что подскажет. Хотя мне не совсем понятно зачем клиенту иметь доступ к свойствам таблицы ?!
2.
Слишком расплывчато поставлена задача. В каком виде исходные документы ? Как происходит сканирование: автоматом, принудительно ? Какова структура таблиц Access ?
Вопросов много, а потому прогу надо самому начинать кропать и вопросы задавать по КОНКРЕТНЫМ проблемам.
Удачи !
AZBuka вне форума  
Старый 25.01.2006, 17:12     # 3
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
kilroy
Для сканировния файлов каталога смотри в хэлпе функции FindFirst, FindNext - там есть пример использования.
ЕЖ вне форума  
Старый 25.01.2006, 17:18     # 4
kilroy
Guest
 
Сообщения: n/a

Уря....токо что решил первую проблему....
Документы-word,excel...
Скан происходит атоматически.Ну указываешь что из этой паки через каждые 30 сек сканить документы.для начала хотелось бы что бы она просто в сибя заносила имя документа и что-то типо сцылки где он храница.вапще как сделать так чтобы она вносила в себя сама автоматом что то...
(вапще я тыщу лет не програмил,точнее 3 года.вот теперь начали напрягать...поэтому я мог чего то забыть...и вполне возможно не понимать некоторых вопросов).
kilroystudio.narod.ru/ado.rar если интересно глянь.(login - Admin pas -"пустой")

ну вот допустим просканировал,нашел он.а куда он их запишет.надо чтобы в БД....все равно СПАСИБО!!!ща глянем....

Последний раз редактировалось kilroy; 25.01.2006 в 17:32.
 
Старый 25.01.2006, 17:28     # 5
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Цитата:
kilroy:
ну вот допустим просканировал,нашел он.а куда он их запишет.надо чтобы в БД....все равно СПАСИБО!!!ща глянем....
Ну ты странный, не "он" должен записывать то что нашел, а ты это должен прописать. Имя файла у тебя в цикле будет найдено, путь ты знаешь, вот и добавляй это всё в свою таблицу БД.
ЕЖ вне форума  
Старый 25.01.2006, 17:38     # 6
kilroy
Guest
 
Сообщения: n/a

т.е. добавляй???
она(прога) должна быть автоматизированна.
то что надо написать код я уже понял.
допустим две кнопочки.1ая - обзор каталога откуда сканить,2ая - сам скан + внесение информации в БД(либо можно и разделить скан и внесение в БД).я так это понимаю... .....
так вот.первую кнопочку(обзор) я сделал.Что писать во второй...
что типо.берем название файла и вписываем его в первое поле первого столбца...так что ли....
не совсем догоняю алгоритм...
 
Старый 25.01.2006, 18:06     # 7
GOre01
Junior Member
 
Аватар для GOre01
 
Регистрация: 10.08.2004
Адрес: Завис в конторе
Пол: Male
Сообщения: 180

GOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царстве
По первой кнопке тебе надо составить список файлов в отсканированной папке. А по второй кнопке, используя список, занести файлы БД. Или же. По первой кнопке просто указываешь каталог, где лежат файлы, а по второй объединяешь поиск с одновременным занесением найденного.
__________________
Не нервируйте меня. Мне скоро негде будет прятать трупы!
GOre01 вне форума  
Старый 25.01.2006, 18:06     # 8
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
kilroy
Ты всё правильно описал, смотри хелп и примеры по командам которые я указал. Сканирование файлов каталога организуется в цикле, пихай его на вторую кнопку. Когда писать в БД - в цикле или потом - решай сам, но видимо стоит ещё и делать проверку: нет ли уже в БД информации об этом файле. Вообще алгоритм ты сам придумываешь, что когда и как делать...
ЕЖ вне форума  
Старый 25.01.2006, 21:38     # 9
kilroy
Guest
 
Сообщения: n/a

Хмммм....будем думать.....ВСЕМ СПАСИБО!!!
(тему пока не закрывайте)
 
Старый 30.01.2006, 12:19     # 10
Novoross
Junior Member
 
Регистрация: 29.09.2005
Сообщения: 99

Novoross Путь к славе только начался
[QUOTE=kilroy]Ну указываешь что из этой паки через каждые 30 сек сканить документы.для начала хотелось бы что бы она просто в сибя заносила имя документа и что-то типо сцылки где он храница.QUOTE]

Я так понимаю, что у тебя в базе всего одна таблица с двумя полями?! первое поле-путь каталога, в котором происходит поиск(например C:\MyFolder),второе поле-имя файла. Если кнопку под названием Обзор ты сделал и прописал код для выбора каталога, то путь к папке у тебя уже есть, соответственно первое поле из таблицы заполнить уже можешь, осталось только второе - сканирование ЕЖ уже сказал как это сделать......Да, если понадобиться проверка нет ли такой записи уже в базе, то мой тебе совет, объединить оба твоих поля в первичный ключ!!!
Novoross вне форума  
Старый 30.01.2006, 20:26     # 11
kilroy
Guest
 
Сообщения: n/a

Неа...
Блин жопа че то никак не могу замутить все это...
"Я так понимаю, что у тебя в базе всего одна таблица с двумя полями?!"
Нет.БД больше.Та таблица которая отвечает за файло(документы) там есть много чего... kilroystudio.narod.ru/ado.rar если интересно глянь.(login - Admin pas -"пустой") (проект должен лежать в C:\ado )(как указать путь к БД с самого начала...а не прописывать его в создании..?)
Вот....потому что я такой меготупой плиз помогите...
Вот сначало мы разберем кнопочку "обзор".
Надо что бы она выдавала как бы типо обзора всех папок и еще чтобы можно было бы в этом обзоре просматривать сетевое окруджение.
+что бы можно было указывать не одну папку(для начала хотя бы одну).
ну вот там указали из какой папки считывать(сканить) файло,далее он делает список этот,например создет его в тхт.а вообще желательно чтобы он делал его в самой проге где список создавал и работал с ним.(нужна еще безопастность).Вот можно было бы что бы он сделала сразу полдный список т.е. имя файла,тип файла,дата создания и изменения...а потом просто тупо заносил бы их в бд.
При чем я думаю что делать цикл не надо(во второй кнопке).
просто при совпадении имени файла он бы заменял его.
уфффф.....голова опухает
Плиз ми!Я покланаяюсь Вам !

Последний раз редактировалось kilroy; 30.01.2006 в 20:47.
 
Старый 31.01.2006, 00:38     # 12
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Самый простой вариант для выбора папки
PHP код:
uses FileCtrl;
var
   
Dirstring='';
begin
  
if SelectDirectory('текст'''Dirthen
    Edit1
.Text:=Dir;
end
Либо вот Unit реализации диалога выбора папки, который напрямую обращается к API функции SHBrowseForFolder (SelectDirectory тоже её пользует). Тут функция BrowseFolder будет возвращать тебе путь к выбранной папке
PHP код:
unit SHBrowseFolder;
interface

  
Uses WindowsSysUtils;

  Function 
BrowseFolder(aWndOwnerTHandleaTitleStringFromPathString ''): String;

implementation

  Uses ActiveX
ShlObj;
  Var 
fSHMallocIMalloc Nil;

    Function 
BrowseCallbackProc(ahwndHWNDuMsgUINTalParamlpDataLPARAM): integerStdCall;
    
Begin
      
If uMsg BFFM_INITIALIZED Then
        PostMessage
(ahwndBFFM_SETSELECTIONDWORD(True), DWORD(lpData));
      
Result := 0;
    
End;

  Function 
BrowseFolder(aWndOwnerTHandleaTitleStringFromPathString ''): String;
  Var
    
anInfoTBrowseInfo;
    
aResultPItemIDList;
  
Begin
    ZeroMemory
(@anInfoSizeOf(anInfo));
    
anInfo.hwndOwner := aWndOwner;
    
anInfo.lpszTitle := PChar(aTitle);
    
anInfo.ulFlags := BIF_RETURNONLYFSDIRS;
    If 
FromPath <> '' Then
    Begin
      anInfo
.lpfn := @BrowseCallbackProc;
      
anInfo.lParam := DWORD(PChar(FromPath));
    
End;
    
aResult := SHBrowseForFolder(anInfo);
    If 
aResult Nil Then Abort;
    Try
      
SetLength(ResultMAX_PATH);
      
Win32Check(SHGetPathFromIDList(aResultPChar(Result)));
      
SetLength(ResultStrLen(PChar(Result)));
    
Finally
      fSHMalloc
.Free(aResult);
    
End;
  
End;

Initialization
  Win32Check
(SHGetMalloc(fSHMalloc) = NOERROR);

Finalization
  
If fSHMalloc <> Nil Then
    fSHMalloc
._Release;
end
ЕЖ вне форума  
Старый 31.01.2006, 20:29     # 13
kilroy
Guest
 
Сообщения: n/a

Пасибо БОЛЬШОЕ!Токо код то на пхп.а я то на дельфи пишу.или одинаково.лана щас попробуем...

С кодом не особо разобралсо.Но появились идейки.
Написать в кнопке Обзор:
TOpenDialog (http://www.sources.ru/delphi/delphi_..._for_all.shtml) использовать вот такой компонент + FindFirst(FindNext) или мож FindDialog1.

procedure TForm1.Button1Click(Sender: TObject);

var
sr: TSearchRec;
FileAttrs: Integer;
begin
StringGrid1.RowCount := 1;
if CheckBox1.Checked then
FileAttrs := faReadOnly
else
FileAttrs := 0;
if CheckBox2.Checked then
FileAttrs := FileAttrs + faHidden;
if CheckBox3.Checked then
FileAttrs := FileAttrs + faSysFile;
if CheckBox4.Checked then
FileAttrs := FileAttrs + faVolumeID;
if CheckBox5.Checked then

FileAttrs := FileAttrs + faDirectory;
if CheckBox6.Checked then
FileAttrs := FileAttrs + faArchive;
if CheckBox7.Checked then

FileAttrs := FileAttrs + faAnyFile;

with StringGrid1 do
begin
RowCount := 0;

if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then

begin
repeat
if (sr.Attr and FileAttrs) = sr.Attr then
begin
RowCount := RowCount + 1;
Cells[1,RowCount-1] := sr.Name;
Cells[2,RowCount-1] := IntToStr(sr.Size);
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
end;
вот....токо надо как то замутить без атрибутов файлов.+ чтобы сканил в указанной директории и записывал куда нить список файлов.

Последний раз редактировалось kilroy; 31.01.2006 в 20:38.
 
Старый 31.01.2006, 22:17     # 14
kilroy
Guest
 
Сообщения: n/a

kilroystudio.narod.ru/ado.rar обновил.
хм...Вот ...
1ое надо чтобы при нажатии на кнопочку обзор выбиралась именно папка а не файл.
2ое надо как нить замутить чтобы из stringgrid данные записывались в dbgrid либо чтобы они сразу писались в dbgrid....
вот....мдя...
 
Старый 03.02.2006, 21:30     # 15
kilroy
Guest
 
Сообщения: n/a

а как убрать из списка фалов расширение фалов?
 
Старый 04.02.2006, 00:18     # 16
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
kilroy
Это был не PHP-код, а Delphi, просто я его оформил в PHP-тэг чтобы была подсветка синтаксиса Так что используй его для выбора папки, а не TOpenDialog.

Далее... DBGrid работает с DataSet - а это либо твоя БД, либо есть компоненты для размещения DataSet просто в памяти без БД (так называемые MemoryDataSet). Но тебе думаю имеет смысл писать прямо в БД, т.к. это тебе вроде и надо.

Про расширения - в Delphi есть целый набор функций для работы со строками, содержащие пути/именами_файлов. В частности ExtractFileName/ExtractFileExt - посмотри в Help, а заодно другие функции из этого юнита.
ЕЖ вне форума  
Старый 04.02.2006, 14:07     # 17
kilroy
Guest
 
Сообщения: n/a

Мля...я совсем отупел
"Далее... DBGrid работает с DataSet - а это либо твоя БД, либо есть компоненты для размещения DataSet просто в памяти без БД (так называемые MemoryDataSet). Но тебе думаю имеет смысл писать прямо в БД, т.к. это тебе вроде и надо."
Не воткнул.Ты что имеешь ввиду???
Мне нужно в БД занести имя файла,и сцылку на него.
Ты скачай мою прогу и посмотри...так нагляднее будет=)
 
Старый 05.02.2006, 19:20     # 18
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
kilroy
Ну глянул я на твою прогу... и чего? Надо тебе в БД заносить имена файлов, так и заноси - зачем тебе для этого StringGrid? Совершенно не понятен твой уровень знаний про работу с БД в Delphi...

Ты написал
Цитата:
kilroy:
надо как нить замутить чтобы из stringgrid данные записывались в dbgrid либо чтобы они сразу писались в dbgrid....
В DBGrid данные не пишутся, DBGrid только отображает данные DataSet (либо результат запроса, либо таблица БД). Хочешь добавалять в DataSet - пиши для связанного с гридой DataSet команды Append...заполнение_полей...Post. Это ты знаешь?
ЕЖ вне форума  
Старый 06.02.2006, 12:01     # 19
kilroy
Guest
 
Сообщения: n/a

Вау!!!
Незнаю.....
Попобробнее плиз!
 
Старый 06.02.2006, 12:16     # 20
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Цитата:
kilroy:
Вау!!!
Незнаю.....
Тогда рановато ты схватилась за разработку, сначала скачай, например, эту книжку и почитай...
http://imho.ws/showpost.php?p=1039565&postcount=1530

Последний раз редактировалось ЕЖ; 06.02.2006 в 12:21.
ЕЖ вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:24.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.