![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программно ввести данные ТХТ в базу данных [D7]
Aleks © (2009-12-17 15:50:00)Доброго времяни суток, Мастера подскажите, как, и как это правильно сделать.
Есть Данные, они в текстовом файле, стороняя программа пищет лог, мне необходимо занести, и переодически добавлять этот лог в базу данных. Разобрать строку я могу, но как их ввести, сохранить, проверить на совпадения не знаю. Может компонент есть какой? В базах я 0, прощу не пиннать, покрайней мере сильно.
Aleks (2009-12-19 08:01:00) [1]всем спасибо. Тема закрыта
Германн (2009-12-19 01:37:00) [2]
> Aleks (18.12.09 22:41) [30]
>
> Вот что у меня получилось.
> Правильно или нет но работает, правда медленно.
> sniknik © (18.12.09 21:22) [25]
>
> > как и как правильно
> и тебе уже в который раз повторяют "insert into ... select
> ... from ... ", это гораздо правильнее (если есть возможность)
> чем по записьное добавление... раз в тыщу быстрее.
>
Ещё раз. Найди хоть самую дешевую книжку по SQL, если встроенный в Дельфи аглицкий хелп (LocalSQL.hlp) читать не хочешь.
Aleks (2009-12-18 22:41:00) [3]Вот что у меня получилось.
Правильно или нет но работает, правда медленно.
Может кто, что подскажет.
Имя год Обл гор ул №дом №кв №Этаж
Text:Integer:Text:Text:Text:Text:Text:Integer:
procedure TForm1.Button1Click(Sender: TObject);
Var
i,p,p1,i1,i2:Integer;
S:String;
begin
Memo1.Lines.LoadFromFile('c:\Text.txt');
For i:=0 to Memo1.Lines.Count-1 Do
If '*'<>Memo1.Lines.Strings[i] Then
Begin
Table1.Insert;
p:=Pos(':',Memo1.Lines.Strings[i]);
Table1.Fields[0].Text:=Copy(Memo1.Lines.Strings[i],0,p-1);
p1:= PosEx(':',Memo1.Lines.Strings[i],p+1);
Table1.Fields[1].Value :=StrToInt(Copy(Memo1.Lines.Strings[i],p+1,p1
(p+1)));
For i1:=2 To 6 Do
Begin
P:=p1;
p1:= PosEx(':',Memo1.Lines.Strings[i],p+1);
Table1.Fields[i1].Text:=Copy(Memo1.Lines.Strings[i],p+1,p1-(p+1));
End;
Table1.Post;
End;
end;
Anatoly Podgoretsky (2009-12-18 22:26:00) [4]Ну а если не можешь, тогда делай парсинг текстового файла и записывай полученые данные в базу.
Anatoly Podgoretsky (2009-12-18 22:25:00) [5]
> Aleks (18.12.09 21:12) [24]
Тебе надо АДО и провайдер JET - ISAM драйвер TextFiles
Вот к нему и можно делать запросы.
Anatoly Podgoretsky (2009-12-18 22:21:00) [6]
> Aleks (18.12.09 16:47) [20]
Это не подходит, это пример построения пользовательского набора данных, к тому же ты привел какую то гадость, а не точный код. Не видать TTextDataset
Aleks (2009-12-18 21:28:00) [7]ну так напишите пример, а то "insert into ... select ... from ... "
не понимаю я как этим пользоваться, с базами не работал ни когда.
sniknik (2009-12-18 21:22:00) [8]> как и как правильно
и тебе уже в который раз повторяют "insert into ... select ... from ... ", это гораздо правильнее (если есть возможность) чем по записьное добавление... раз в тыщу быстрее.
Aleks (2009-12-18 21:12:00) [9]Мастера я просил вас подсказать мне, как и как правильно, занести данные которые хронятся в текстовом файле в базу данных. Спасибо за дискусию.
Правда мне пару строк кода нужно было.
Table1.Insert; --Добавить новую запись
Table1.Edit; --- Редактировать существующую
Table1.FieldAddress('Имя1');
Table1.Fields[1].Value:=MaskEdit1.Text; цифры
// ИЛИ
//Table1.FieldByName('Имя').AsString :=MaskEdit1.Text; текст
Table1.Post;
sniknik (2009-12-18 21:07:00) [10]пример вовсе не в том коде что ты привет, а в
> ... See TextData.Pas for more info...
Aleks (2009-12-18 21:02:00) [11]
> sniknik ©
C:\Program Files\Borland\ Delphi7\Demos\Db\TextDataесть пример
Может в этом вся разница, у меня так :
unit TextMain;
{ This project demonstrates a custom TDataSet implementation.
See TextData.Pas for more info. You will need to compile and
install TextPKG.DPK before using this sample. }
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
TextData, ExtCtrls, DBCtrls, Grids, DBGrids, Db;
type
TTextDataDemoForm = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;
var
TextDataDemoForm: TTextDataDemoForm;
implementation
{$R *.dfm}
end.
sniknik (2009-12-18 20:41:00) [12]> и ни строчки кода.
ни фига ж себе, ни строчки... 461 строка, пример компонента наследника TDataSet написан для текста (простенький, но все же).
не то, что с запросом конечно... но почему бы и нет? можно и так сделать, типа "ход конем" - учимся писать компоненты для изучения работы базой. ага.
Aleks (2009-12-18 16:47:00) [13]
> C:\Program Files\Borland\Delphi6\Demos\Db\TextDataесть пример.
> Я правда его не особо смотрел про что он, но по названию
> вроде похоже.
к сожалению там просто BD с навигатором, из раздела, как связать bd с таблицей, и ни строчки кода.
Sergey13 (2009-12-18 16:37:00) [14]> [18] Aleks (18.12.09 16:23)
В
C:\Program Files\Borland\Delphi6\Demos\Db\TextData
есть пример. Я правда его не особо смотрел про что он, но по названию вроде похоже.
Aleks (2009-12-18 16:23:00) [15]
> Книжку почитай.
Была бы толковая книга, я б почитал. Делаю по эл.книге, а там только создание базы и выборка из неё данных. Ввод данных с клавиатуры, создание или удаление записи, с помощью навигатора.
Anatoly Podgoretsky (2009-12-18 15:37:00) [16]> Aleks (18.12.2009 15:23:15) [15]
Вместо троеточий подставь свои данные, подробности все равно в справке.
Германн (2009-12-18 15:26:00) [17]
> не чего не понял ... как этим
> пользоваться?
Книжку почитай.
Aleks (2009-12-18 15:23:00) [18]не чего не понял, INSERT INTO ... SELECT FROM ... как этим пользоваться?
пример можно.
sniknik (2009-12-18 13:26:00) [19]> один цикл с описанием
цикл не нужен, достаточно одной таблет... команды, и тебе ее привели, а описание есть в хелпе.
> Хм, я, когда первый раз с чем-то, описание читаю обычно.
а я ему еще и следую... ;) пока не понимаю процесса обычно буквально.
Плохиш (2009-12-18 12:17:00) [20]
> Ну не понимаю я, первый раз с BD, спасибо.
Хм, я, когда первый раз с чем-то, описание читаю обычно.