Вверх ↑
Этот топик читают: Гость
Ответов: 1291
Рейтинг: 47
#1: 2020-04-25 10:08:54 ЛС | профиль | цитата
Решил создать программу для учета продаваемых мною программ на разных языках и на разных сайтах, со статистикой по сайтам, пользователям и программам, с графиками. Потому что этот мой случайный заработок похоже постепенно превращается в основной и никак не заканчивается)Хоть копейки, но капают постоянно.

Поискал готовые аналоги - слишком замороченные они под бухгалтерию или без графиков. (Может плохо искал, посоветуйте)

Посмотрел примеры - все работают с уже готовым файлом базы данных. А если его нет, как сгенерировать и создать нужную базу в нужном формате Нулевой пустой файл не пойдет ведь.
Вот например этот пример, как создать с нуля tst.mdb ?

Add(DataGrid,14699,238,210)
{
Left=80
Top=70
Width=300
Height=195
Font=[Arial,8,0,0,1]
link(Query,61892:Query,[])
}
Add(Hub,29256,112,140)
{
link(onEvent1,89786:doData,[])
link(onEvent2,53168:doEvent1,[(163,153)(163,216)])
}
Add(Hub,53168,182,210)
{
InCount=2
OutCount=1
link(onEvent1,14699:doRefresh,[])
}
Add(Button,81531,119,217)
{
Left=5
Top=70
Font=[Arial,8,0,0,1]
Caption="Refresh"
link(onClick,53168:doEvent2,[])
}
Add(Button,99133,98,70)
{
Left=5
Top=10
Font=[Arial,8,0,0,1]
Caption="Open"
link(onClick,61892:doOpen,[(223,76)(223,125)])
}
Add(DoData,89786,168,140)
{
link(onEventData,61892:doQuery,[])
link(Data,36653:Text,[])
}
Add(Edit,36653,168,91)
{
Left=80
Top=40
Width=300
Height=21
Font=[Arial,8,0,0,1]
Text="select * from OTV"
}
Add(Button,71023,56,140)
{
Left=5
Top=40
Font=[Arial,8,0,0,1]
Caption="Query"
link(onClick,29256:doEvent1,[])
}
Add(MSSQL,61892,238,119)
{
link(FileName,3943:Text,[])
}
Add(Edit,3943,238,28)
{
Left=80
Top=10
Width=300
Height=21
Font=[Arial,8,0,0,1]
Text="tst.mdb"
}

И вообще просветите, какая база данные самая функциональная и лучшая? Нужно также, чтобы она умела защищать свои данные с помощью пароля.
Искал также на форуме компонент sqlite без dll не нашел.

Редактировалось 3 раз(а), последний 2020-04-25 10:13:50
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 16884
Рейтинг: 1239
#2: 2020-04-25 10:31:31 ЛС | профиль | цитата
Aziz писал(а):
Решил создать программу для учета продаваемых мною программ на разных языках и на разных сайтах, со статистикой по пользователям и программам, с графиками.
Любая. Графики в любом случае придется строить самостоятельно.
Aziz писал(а):
И вообще просветите, какая база данные самая функциональная и лучшая?
Для получения статистики "по пользователям и программам" не нужно "самой функциональной".
Aziz писал(а):
Нужно также, чтобы она умела защищать свои данные с помощью пароля.
Просто шифруй записи.
https://geekbrains.ru/posts/databases_trends

Редактировалось 1 раз(а), последний 2020-04-25 10:37:49
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1291
Рейтинг: 47
#3: 2020-04-25 10:39:55 ЛС | профиль | цитата
Tad, это все понятно. Но все же, к основному вопросу - это невозможно? Нашел этот код, сейчас дорабатываю компонент:

procedure CreateSQLBase;
var myADO : TADOQuery;
NameSQLBase,NameSQLTable,NameSQLServer : string;

begin
myADO:=TADOQuery.Create(self);
myADO.ConnectionString:='Provider=SQLOLEDB.1;'+
'Integrated Security=SSPI;'+
'Persist Security Info=False;'+
'Data Source='+NameSQLServer;
myADO.SQL.Clear;
myADO.SQL.Text:='CREATE DATABASE '+NameSQLBase;
try
myADO.ExecSQL;
except
ShowMessage('База данных с именем: "'+NameSQLBase+'" - уже существует...');
end;
myADO.Free;
end;

Создать таблицу на SQL-сервере:

procedure CreateSQLTable;
var myADO : TADOQuery;
NameSQLBase,NameSQLTable,NameSQLServer : string;

begin
myADO:=TADOQuery.Create(self);
myADO.ConnectionString:='Provider=SQLOLEDB.1;'+
'Integrated Security=SSPI;'+
'Persist Security Info=False;'+
'Initial Catalog='+NameSQLBase+';'+
'Data Source='+NameSQLServer;

myADO.SQL.Clear;
myADO.SQL.Text:='CREATE TABLE NameSQLTable ('+
'[Number] [int] IDENTITY (1,1) NOT NULL ,'+
'[Chek] [Bit] NULL , '+
'[Text1] [varchar] (10) NULL ,'+
'[Text2] [varchar] (20) NULL ,'+
//поля таблицы......
'[Text3] [varchar] (30) NULL ,'+
'[Text4] [varchar] (255) NULL ,'+
'[Chislo] int,'+
'[Comment] memo,'+
' ON [PRIMARY]';
try
myADO.ExecSQL;
except
ShowMessage('Ошибка создания таблицы "'+NameSQLTable+'", или'+#13+#10+
'такая таблица уже существует...');
end;
myADO.Free;
end;

https://www.cyberforum.ru/delphi-database/thread14227.html

Редактировалось 2 раз(а), последний 2020-04-25 10:41:52
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 16884
Рейтинг: 1239
#4: 2020-04-25 10:53:01 ЛС | профиль | цитата
Aziz, для твоих целей достаточно SQLite.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1291
Рейтинг: 47
#5: 2020-04-25 11:13:28 ЛС | профиль | цитата
Tad, однако это не поможет мне создать базу данных с нуля.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 1291
Рейтинг: 47
#6: 2020-04-25 12:58:25 ЛС | профиль | цитата
Чудеса Хиасм - создал компонент с именем hiMSSQLex с тем же кодом что и у оригинального, только везде добавил к hiMSSQL приставку ex - не работает)

--- Добавлено в 2020-04-25 13:42:13

Похоже, KOLEdb работает только с оригинальным именем компонента и исходника.

Редактировалось 1 раз(а), последний 2020-04-25 13:42:13
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 16884
Рейтинг: 1239
#7: 2020-04-25 13:54:53 ЛС | профиль | цитата
Как создавать базу данных из программы

SQLite
Add(MainForm,2953706,14,189)
{
Point(onClose)
link(onCreate,4800683:doOpen,[])
link(onClose,4800683:doClose,[])
}
Add(DS_SQLite,4800683,63,203)
{
Name="mydb"
FileName="Sale.db"
link(onOpen,9733076:doExec,[])
}
Add(DSC_Exec,9733076,112,203)
{
SQL="-- Список программ\r\nCREATE TABLE IF NOT EXISTS progs(\r\n [id] INTEGER PRIMARY KEY,\r\n [progName] TEXT NOT NULL ,\r\n [Data] INTEGER,\r\n [comm] TEXT);\r\n-- Отметки о продаже\r\nCREATE TABLE IF NOT EXISTS sb(\r\n [id] INTEGER PRIMARY KEY,\r\n [prog_id] INTEGER, \r\n [pData] INTEGER); "
DSManager="mydb"
}

MSSQL
1. Установить и Запустить среду SQL Server Management Studio и подключиться к SQL серверу.
2. В обозревателе объектов щелкнуть по контейнеру «Базы данных» правой кнопкой мыши и выбрать пункт «Создать базу данных».
В результате откроется окно «Создание базы данных».

Редактировалось 4 раз(а), последний 2020-04-25 14:07:54
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1291
Рейтинг: 47
#8: 2020-04-25 14:34:38 ЛС | профиль | цитата
Tad,спасибо большое! А насчет чудес с созданием кастомного компонента, почему так? Я уже пробовал ех менять просто на цифру 2, думая вдруг это зарезервированное слово, попробовал на официальной сборке - тоже самое. Все компилируется без ошибок, просто не выдает из базы в таблицу никаких данных. Компилятор неофициальный, секретный)

Редактировалось 4 раз(а), последний 2020-04-25 14:37:15
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 1291
Рейтинг: 47
#9: 2020-04-27 13:15:05 ЛС | профиль | цитата
Nesco, может ты прольешь свет на сию тайну великого и могучего?)
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 16884
Рейтинг: 1239
#10: 2020-04-27 15:10:47 ЛС | профиль | цитата
Aziz писал(а):
Nesco, может ты прольешь свет на сию тайну великого и могучего?)

Aziz писал(а):
создал компонент с именем hiMSSQLex
И где он?
может ты прольешь свет на сию тайну?
Aziz писал(а):
Создать таблицу на SQL-сервере

SQL-сервер у тебя установлен?

Редактировалось 1 раз(а), последний 2020-04-27 15:33:22
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Главный модератор
Ответов: 2999
Рейтинг: 396
#11: 2020-04-27 15:47:54 ЛС | профиль | цитата

CREATE DATABASE IF NOT EXISTS `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 1291
Рейтинг: 47
#12: 2020-04-27 17:02:11 ЛС | профиль | цитата
Nic, и куда, в какой компонент этот запрос вписывать чтобы база создалась? Попробовал в поле quеry и execute штатного примера - не создалась.
И кстати, заметил что штатный пример SQLite_with_SQLiteDataSource.sha сам создает с нуля базу тоже.

Tad,
Tad писал(а):
Aziz писал(а):
создал компонент с именем hiMSSQLex
И где он?
может ты прольешь свет на сию тайну?

Это копия hiMSSQL, просто пытался его переименовать в hiMSSQLex, в тч внутренние константы из hiMSSQL в hiMSSQLex, плюс имена юнитов. Это можете сами попробовать. По идее должна была получиться копия первоначального элемента но с другим названием. Всегда так делал при модификациях компонентов, а тут не вышло. Из чего сделан вывод что есть упоминание этого исходника с жесткой привязкой к его имени еще в каких-то подключаемых в нем файлах.

Tad писал(а):
SQL-сервер у тебя установлен?

Нет.

Редактировалось 1 раз(а), последний 2020-04-27 17:02:51
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 16884
Рейтинг: 1239
#13: 2020-04-27 20:35:56 ЛС | профиль | цитата
Aziz писал(а):
И кстати, заметил что штатный пример SQLite_with_SQLiteDataSource.sha сам создает с нуля базу

Потому я и советовал применить SQLite.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1291
Рейтинг: 47
#14: 2020-04-28 02:03:39 ЛС | профиль | цитата
Tad, ты как-то неэксплиситно сказал) надо было сделать явное приведение типов, сдвинуть пойнтеры парадигмы на факт создания базы)
Что интересно, в процессе издевательских экспериментов над кодом компонента MSSQL, он как-то умудрился создать пустой файл базы, с моим именем и именем компа внутри. После сколько не пытался воспроизвести, не вышло.

--- Добавлено в 2020-04-28 02:05:15

Я вот думаю. а если создать обычный текстовый файл и подсунуть ему вместо базы, подцепит он ее?

Редактировалось 1 раз(а), последний 2020-04-28 02:05:15
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 16884
Рейтинг: 1239
#15: 2020-04-28 05:13:21 ЛС | профиль | цитата
Aziz писал(а):
Я вот думаю. а если создать обычный текстовый файл
БД SQLite и есть обычный текстовый файл.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)