|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
dbf в delphi
Доброго времени суток. Я новичек в БД но возникла ситуация что надо сделать програмку с открытием 2-х dbf файлов выборкой оттуда нужной информации и записью ее в др. dbf. Нашел код в инете, для открытия, теперь нужно сделать выборку из 2-х или более файлов и записать в новый dbf подскажите как это можно сделать или где посмотреть.
Спасибо. Последний раз редактировалось Andrej-zhe, 28.08.2012 в 16:56. |
#2
|
||||
|
||||
используй TQuery
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Использую, но можно по подробнее может ссылочка есть гед можно посмотреть как это все организуется
|
#4
|
||||
|
||||
Можно же организовать несколько подключений (TADOConnection), каждое к отдельной dbf'ке.
Чтоб заинсертить данные в другой файл, просто откроешь Query для первой ДБФ-ки, вытащишь данные и передашь их в ADOCommand для второй ДБФ-ки. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
||||
|
||||
навскидку
Код:
Query.Close; Query.SQL.Text:='SELECT f.*, s.* FROM t1.dbf f, t2.dbf s WHERE t.id = s.id'; Query.Open; while not Query.Eof do begin <пишем в 3-ю табличку> Query.Next; end; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#6
|
||||
|
||||
Один ДБФ - одна таблица же вроде?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
||||
|
||||
таблица то одна, а вот запросом можно обратиться и к нескольким файлам (таблицам) ... если я ниче не путаю
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#8
|
|||
|
|||
Прошу прощение за нубство.
Попробую объяснить что мне требуется. К сожалению конкретизировать не могу что за табл и что там надо, поэтому буду описывать возможно немного запутанно. Существует табл.№1 №2 №3 №4. Из каждой этой таблици путем сравнения например определенного толбца в №1 №2 и №3 табл нужно выдетруть информацию и записать ее в табл. №5. Затем по аналогии сравнить табл №3 и №4 и из талб №4 добавить в №5 недостающую информацию. Вот все что у меня есть: Код:
procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then begin ADOConnection1.Close; ADOConnection1.ConnectionString := Format('Provider=VFPOLEDB.1;Data Source=%s;' + 'Mode=ReadWrite;Extended Properties="";User ID="";Password="";' +'Mask Password = False; ' + 'Cache Authentication=False;Encrypt Password=False;' + 'Collating Sequence = RUSSIAN; DSN = ""',[ExtractFilePath(OpenDialog1.FileName)]); ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(Format('select * from %s', [ExtractFileName(OpenDialog1.FileName)])); ADOQuery1.Active := True end; end; Последний раз редактировалось Bargest, 19.09.2012 в 23:44. |
#9
|
||||
|
||||
а ты укажи реальные имена таблиц, какие поля с какими полями нужно сравнивать и какие поля с какой таблицы нужно выбирать
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#10
|
||||
|
||||
последовательно в TQuery выполнить запросы:
Код:
insert into t5 (f1, f2, ..., fn) select f1, f2, ..., fn from t1 where f1=* and f2=* insert into t5 (f1, f2, ..., fn) select f1, f2, ..., fn from t2 where f1=* and f2=* insert into t5 (f1, f2, ..., fn) select f1, f2, ..., fn from t3 where f1=* and f2=* Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 29.08.2012 в 13:22. |
#11
|
|||
|
|||
Тогда так.
имена: duk.dbf, mklh.dbf, op.dbf, op_ozo.dbf а пятый назовем sbor.dbf 1)В duk.dbf, op.dbf и op_ozo.dbf нужно сравнить поля type, subtype, key, если эти поля совпадают тогда из duk.dbf нужно записать в sbor.dbf kod и name? а из op.dbf в sbor.dbf поле N. да вот еще если возможно то поля type, subtype, key можно сравнивать объединив значения в одно, т.к. там строковые символы но отобразаются числами. Например, type = 1, subtype = 2, key = 3, объединение будет выглядеть так 123. 2)последнюю таблицу после пункта 1 мы уже можем сравнивать sbor.dbf c mklh.dbf по полям n и nk, если они совпадают то из mklh.dbf нужно записать в sbor.dbf поля FIO, DP, DR, DV. вот как то так. |
#12
|
|||
|
|||
Я пошел от обратного вывел из mklh.dbf все необходимые поля и теперь нужно узнать добавить 1 поле которое находится в duk.dbf, но к нему можно попасть только так mklh.dbf -> op.dbf -> op_ozo.dbf -> duk.dbf
C mklh.dbf в op.dbf по полю nk и n соответственно. С op.dbf в op_ozo.dbf и с op_ozo.dbf в duk.dbf через поля type, subtype и key Как вот делаются условия? мне получается надо сделать условие такого типа (если в поле nk файла mklh.dbf равно полю n в op.dbf, а поле type+subtype+key в файле op.dbf равно полю type+subtype+key в файле op_ozo.dbf и поля type+subtype+key в файле op_ozo.dbf равно полю type+subtype+key в файле duk.dbf, то из файла duk.dbf добавить в mklh.dbf поле name и поле kod) вот такая вот смерть кащея( Последний раз редактировалось Andrej-zhe, 30.08.2012 в 12:05. |
#13
|
||||
|
||||
Цитата:
|
#14
|
||||
|
||||
Цитата:
Код:
Query.Close; Query.SQL.Text:='SELECT d.kod, d.name, o.N FROM duk.dbf d, op.dbf o, op_ozo.dbf z WHERE d.type||d.subtype||d.key = o.type||o.subtype||o.key AND d.type||d.subtype||d.key = z.type||z.subtype||z.key'; Query.Open; if Query.RecordCount>0 then begin tblSbor.Open; while not Query.Eof do begin tblSbor.Insert; tblSbor.FieldByName('kod').Value:=Query.FieldByName('kod').Value; tblSbor.FieldByName('name').Value:=Query.FieldByName('name').Value; tblSbor.FieldByName('N').Value:=Query.FieldByName('N').Value; tblSbor.Post; Query.Next; end; end else ShowMessage('Ни одной записи не найдено'); Цитата:
см. решение п1. (аналогия) Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
Andrej-zhe (30.08.2012)
|
#15
|
|||
|
|||
Юрий спасибо щас буду пытаться победить. О результате отпишусь.
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|