Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Oracle+Delphi, передача данных 
V
    Опции темы
AyanTai
Дата 19.12.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток всем!
просмотрев темы в поисковике, не нашел для себя ответа.
с БД начал работать недавно- опыта нет(за неадыкватное высказывание прошу прощения).
Задача в следующем: есть папка с файлами *.dbf (в которых есть поля: Фамилия |имя|Отчество|ID, ID пустой), так же есть таблица в БД Оракл с теми же полями (Фамилия |имя|Отчество|ID, НО  ID не пустой). нужно прочитать данные из *.dbf, сравнить с таблицей Оракла и совпадающим по ФИО полям присвоить ID. и все выложить обратно в *.DBF файл. 
использую BDE(для открытия DBF) и ADO(соединение с ораклом). создал таблицу(пусть будет ОРА) в Оракле(однотипную что и DBF файл). затем в Table1 вывожу данные из выбранного файла и отражаю все в гриде...теперь хочу передать данные в пустую созданную таблицу(ОРА)
Трабла в том что не знаю ( ниразу этого не далал) как передать даные из DBGrida в таблицу Оракловую  smile . PS а дальше написал уже процедурку на сравнение двух таблиц по ФИО...
 за ранее всем спасибо кто поможет!!!

Добавлено через 4 минуты и 58 секунд
кстати вывожу данные в грид вот так:

procedure TForm1.btDirIn_ordClick(Sender: TObject);   // кнопка Открыть
begin
Form1.OpenDialog1.Execute;
Form1.Edit1.Text:=OpenDialog1.FileName;
Label2.Caption:=OpenDialog1.FileName;
Form1.Table1.TableName:=OpenDialog1.FileName;
Form1.Table1.Active:=true;
end;




PM MAIL   Вверх
Frees
Дата 19.12.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(AyanTai @  19.12.2008,  13:34 Найти цитируемый пост)
с БД начал работать недавно- опыта нет

что же тебя тогда сразу на оракл понисло

по теме, можно примерно вот так сделать

Код

 procedure dbfToOrcl();
 begin
  ADOQuery1.SQL := 'Select * from table1 where FIO = :FIO';
  Table1.First;
  while not Table1.Eof do
  begin
    ADOQuery1.Close;
    ADOQuery1.Parameters.ParamByName('FIO').Value :=
      Table1.FieldByName('FIO').value;
    ADOQuery1.Open;
    if ADOQuery1.RecordCount > 0 then
    begin
      Table1.Edit;
      Table1.FieldByName('ID').Value :=
           ADOQuery1.FieldByName('ID').Value;
      Table1.Post;
    end;
    Table1.Next;
  end;
 end;



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
AyanTai
Дата 19.12.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Frees    -  спасибо большое за быстроту ответа сейчас попробую!!! 
PM MAIL   Вверх
Frees
Дата 19.12.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



занести данные в таблицу оракла из dbf можно вот так

Код

procedure IsertToOrcl();
 begin
  ADOQuery1.SQL := 'INSERT INTO ORA (ID,FIO)VALUES (:ID,:FIO)';
  Table1.First;
  while not Table1.Eof do
  begin
    ADOQuery1.Close;
    ADOQuery1.Parameters.ParamByName('ID').Value :=
      Table1.FieldByName('ID').value;
    ADOQuery1.Parameters.ParamByName('FIO').Value :=
      Table1.FieldByName('FIO').value;
    ADOQuery1.ExecSQL;
    Table1.Next;
  end;
 end;



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
AyanTai
Дата 19.12.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ADOQuery1.SQL := 'Select * from table1 where FIO = :FIO'

From Table1 - ADO не поймет! я же Table1  получаю через BDE!
PM MAIL   Вверх
Frees
Дата 19.12.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(AyanTai @  19.12.2008,  14:15 Найти цитируемый пост)
From Table1 - ADO не поймет

Table1 это имя твоей тоблицы в оракле с фамилиями и ИД

Добавлено через 43 секунды
у те бя это как я понимаю Select * from ORA where FIO = :FIO


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Данкинг
Дата 19.12.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Когда-то писал прогу для экспорта из DBF в Oracle (через ADO и DOA соответственно). Вот, прилагаю, может, пригодится. smile 

Присоединённый файл ( Кол-во скачиваний: 23 )
Присоединённый файл  dbf2ora.rar 15,96 Kb


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
AyanTai
Дата 19.12.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Респект и уважуха вам ребята!!!  smile   
PM MAIL   Вверх
Kbl4AH
Дата 20.12.2008, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Frees @  19.12.2008,  11:52 Найти цитируемый пост)
что же тебя тогда сразу на оракл понисло

Я вот, что такое Делфи даже не знал, а мне сказали проги на нем делать, которые с Oracle работают...
Хорошо хоть оказалось всего лишь запросы делать smile 
PM MAIL ICQ   Вверх
AyanTai
Дата 22.12.2008, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



const1 = ' INSERT INTO OPA (vorna) Values ( ' :vorna ' ) ';
....
procedure DbfToOrc();    //Выполнить
var i: integer;
begin
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.open;
Form1.Table1.First;
For i:=0 to Form1.Table1.Fields.Count do
    begin
    Form1.ADOQuery1.FieldByName('VORNA').Value:=Form1.Table1.fieldbyname('VORNA').Value;
    Form1.ADOQuery1.SQL.Add(const1);
    Form1.ADOQuery1.ExecSQL;
    Form1.ADOQuery1.Active:=true;
    Form1.Table1.Next;
    end;
end;

 :vorna  - при такой конструкции разве так будут передаваться данные? у меня Делфи ругается....((





PM MAIL   Вверх
Kbl4AH
Дата 22.12.2008, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AyanTai @  22.12.2008,  08:49 Найти цитируемый пост)
 :vorna  - при такой конструкции разве так будут передаваться данные? у меня Делфи ругается....((

Это переменная так обозначается... Но перед тем, ка выполнять запрос переменную нужно объявить и значение ей присвоить... может поэтому ругается?
А что за ошибка?

Это сообщение отредактировал(а) Kbl4AH - 22.12.2008, 11:56
PM MAIL ICQ   Вверх
Данкинг
Дата 22.12.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(AyanTai @  22.12.2008,  08:49 Найти цитируемый пост)

Код

Form1.ADOQuery1.FieldByName('VORNA').Value:=Form1.Table1.fieldbyname('VORNA').Value;
Form1.ADOQuery1.SQL.Add(const1);

Ты сам понял, что написал? smile 
Да и вообще - весь цикл удали и напиши заново, там полная <она> написана. smile  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
AyanTai
Дата 22.12.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот так начинает записывать в таблицу оракла(взял только столбец - ИМЯ), но заполняет только последнее имя, как сделать чтоб все имена заполнял?

const1 = 'INSERT INTO nnr_id (vorna) Values ( ';
const3 = ' ); ';

procedure DbfToOrc();    // Выполнить
Цитата



begin
Form1.Table1.First;

While not Form1.Table1.Eof do
    begin
    Form1.ADOQuery1.Open;
    Form1.ADOQuery1.Edit;
    Form1.ADOQuery1.FieldByName('Имя').AsString:=Form1.Table1.FieldByName('Имя').AsString;
    Form1.ADOQuery1.SQL.Add(const1+ Form1.ADOQuery1.FieldByName('Имя').AsString + const3);
    Form1.Table1.Next;

    end;
PM MAIL   Вверх
Данкинг
Дата 22.12.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



AyanTai, посмотри мой пример. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
AyanTai
Дата 22.12.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



и еще выдает ошибку "ORA-00933: SQL command not property ended" ((  ставлю после  Form1.Table1.Next;  ->
Form1.ADOQuery1.close; - не помогает((
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


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

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


 




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


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

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