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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2011, 16:25   #1
v.v.veter
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 16
Вопрос (Delphi) Работа с базой

Нужно из .txt файла вставить данные в базу.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var VF:textfile; s:string;
begin
      booktable.Open;

      //связываем файловую переменную (типа дискриптор) с файлом
     AssignFile(VF,'c:\2.txt'); //это разовая программа, поэтому не время тратим
     //на всякие диалоги выбора файлов и прочие "красивости"

     // открываем файл
     Reset(VF);

    //в цикле читаем файл
    while not(eof(VF)) do
    begin
         ReadLn(VF,s); //читаем наименование товара
         Table.Append; // добавляем запись в базу данных
         Table.Fields.FieldByName('name').Value:=s; //записываем в поле
         ReadLn(VF,s); // читаем цены
         Table.Fields.FieldByName('price').Value:=StrToInt(s);
    end;
    CloseFile(VF);
    Table.Close;
end;

end.
Код:
unit Unit2;

interface

uses
  SysUtils, Classes, DB, ADODB;

type
  TDataModuleunit = class(TDataModule)
    booktable: TADOTable;
    DataSource1: TDataSource;
    ADOConnection1: TADOConnection;
    booktableКод: TAutoIncField;
    booktableслово: TWideStringField;
    booktableповторов: TWideStringField;
    booktableкнига: TIntegerField;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModuleunit: TDataModuleunit;

implementation

{$R *.dfm}

end.
А то чет я тут накрутил, и у меня не работает, да плохо разбираюсь в этом.
Проект с базой и .txt
Вложения
Тип файла: rar проект.rar (528.7 Кб, 9 просмотров)
v.v.veter вне форума Ответить с цитированием
Старый 25.05.2011, 16:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, сразу, ещё не открывая проект...
только посмотрев файл 2.txt
могу сказать, что добавление данных разботать не будет - выдаст ошибку преобразования строки в число!!
Цитата:
Код:
ReadLn(VF,s); //читаем наименование товара
нет. Этим Вы прочитаете ЦЕЛИКОМ строчку из файла.
т.е. для первой строчки там будет "стол 32" (без кавычек, разумеется)!
ну и второй ReadlN - прочитает не цену - а целиком ВТОРУЮ строчку!


p.s. кроме того, а что, Вы в таблице решили обойтись без ключевого поля?!
Это как минимум - нарушение правила создания реляционных СУБД. как максимум - ошибка проектирования структуры БД


сразу не обратил внимание...
а что такое переменная table ???!
Цитата:
Код:
Table.Append; // добавляем запись в базу данных
         Table.Fields.FieldByName('name').Value:=s; //записываем в поле
где она задаётся, устанавливается?!
С какой таблицей связана?!
Вы думаете, взяли чужой проект, в котором была работа с библиотекой, заменил, код, который был на кнопке и всё? этого достаточно?! Так Вы очень сильно заблуждаетесь!!!

Последний раз редактировалось Serge_Bliznykov; 25.05.2011 в 16:53.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2011, 21:21   #3
v.v.veter
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 16
По умолчанию

Ок,разберусь.

Последний раз редактировалось v.v.veter; 25.05.2011 в 23:28.
v.v.veter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
РАБОТА С БАЗОЙ ДАННЫХ emsisem Фриланс 4 30.04.2011 19:08
Accsess Delphi работа с базой -BlindGuardian- Помощь студентам 0 24.01.2010 19:27