Вверх ↑
Этот топик читают: Гость
Ответов: 133
Рейтинг: 0
#1: 2024-09-19 20:28:22 ЛС | профиль | цитата
Всем привет. Решил для будущей работы сделать себе базу данных клиентов ремонта, не могу определится что лучше использовать для базы данных? Список строк или дерево картежей. И что использовать в качестве собственно базы данных? Подскажите пожалуйста.
В принципе сперва заполняются все поля кроме Общая сумма, Работа и Детали, после выполнения работы они заполняются. Соответственно нужно править потом конкретный пункт базы данных.
Вот заготовка интерфейса:
Add(MainForm,2953706,21,105)
{
Width=1087
Height=819
}
Add(Button,2538230,84,42)
{
Left=10
Top=10
Width=110
Caption="Добавить"
}
Add(Button,5568078,84,84)
{
Left=130
Top=10
Width=110
Caption="Удалить"
}
Add(Edit,8217978,84,168)
{
Left=10
Top=60
Width=230
Text=""
}
Add(Label,8503706,84,126)
{
Left=10
Top=40
Width=36
Height=17
Caption="Поиск"
}
Add(Edit,5655512,329,84)
{
Left=310
Top=75
Width=450
Text=""
}
Add(Edit,9607550,329,126)
{
Left=310
Top=100
Width=210
TabOrder=1
Text=""
}
Add(Edit,2080591,329,168)
{
Left=250
Top=155
Width=400
Height=180
TabOrder=2
Text=""
}
Add(Edit,11531335,329,210)
{
Left=660
Top=155
Width=400
Height=180
TabOrder=3
Text=""
}
Add(Edit,8053908,329,252)
{
Left=250
Top=375
Width=150
TabOrder=4
Text=""
}
Add(Edit,4909914,329,294)
{
Left=250
Top=420
Width=270
Height=80
TabOrder=5
Text=""
}
Add(Edit,11585420,329,336)
{
Left=530
Top=420
Width=270
Height=80
TabOrder=6
Text=""
}
Add(Label,919593,287,84)
{
Left=250
Top=80
Width=31
Height=17
Caption="ФИО"
}
Add(Label,8428909,287,126)
{
Left=250
Top=100
Width=49
Height=17
Caption="Телефон"
}
Add(Label,14807752,287,168)
{
Left=250
Top=130
Width=100
Height=17
Caption="Описание дефекта"
}
Add(Label,13419684,287,210)
{
Left=660
Top=130
Width=110
Height=17
Caption="Проделанная работа"
}
Add(Label,4059475,287,252)
{
Left=250
Top=350
Width=75
Height=17
Caption="Общая сумма"
}
Add(Label,14336432,287,294)
{
Left=250
Top=400
Width=40
Height=17
Caption="Работа"
}
Add(Label,13326405,287,336)
{
Left=530
Top=400
Width=42
Height=17
Caption="Детали"
}
Add(Edit,9097887,329,42)
{
Left=310
Top=50
Width=120
TabOrder=1
Text=""
link(Str,8949400:FormatTime,[(335,30)(377,30)(377,86)(461,86)])
}
Add(Label,10179975,287,42)
{
Left=250
Top=55
Width=30
Height=17
Caption="Дата"
}
Add(Button,15760944,378,42)
{
Left=440
Top=50
Width=110
Caption="Добавить"
link(onClick,14114051:doEvent1,[])
}
Add(Time,8949400,455,42)
{
Time_Date=1
Format="D.M.Y"
}
Add(Hub,14114051,427,42)
{
link(onEvent1,8949400:doTimeDate,[])
link(onEvent2,9097887:doText,[(453,55)(453,51)(317,51)(317,48)])
}
Add(TreeViewTrain,4316209,84,210)
{
Left=10
Top=90
Width=230
Height=680
Name="main"
Point(NextID)
}


Редактировалось 1 раз(а), последний 2024-09-19 20:31:56
карма: 1

0
Ответов: 8921
Рейтинг: 823
#2: 2024-09-19 20:57:04 ЛС | профиль | цитата
Serascer, к сожалению наш специалист по БД не сможет вам ответить.
Ну а попытка всё общение с БД запихнуть в один интерфейс к хорошему не приведёт.
карма: 19

0
Ответов: 133
Рейтинг: 0
#3: 2024-09-19 21:11:23 ЛС | профиль | цитата
Леонид, ну это скорее как макет интерфейса )))) Я открыт к предложениям
карма: 1

0
Ответов: 2236
Рейтинг: 676
#4: 2024-09-20 10:21:50 ЛС | профиль | цитата
Serascer писал(а):
что использовать в качестве собственно базы данных?
sqlite как вариант
Serascer писал(а):
Список строк или дерево картежей.
Смотря какие данные нужно отобразить
карма: 11

0
Ответов: 133
Рейтинг: 0
#5: 2024-09-20 17:40:47 ЛС | профиль | цитата
sla8a, да вот тоже склоняюсь к этому варианту.
В списке отобразить надо дату и фамилию клиента
карма: 1

0
Ответов: 2236
Рейтинг: 676
#6: 2024-09-20 21:22:45 ЛС | профиль | цитата
Serascer писал(а):
отобразить надо дату и фамилию клиента
Скорее всего таблица лучше всего для этого подойдёт. Всегда удобно отсортировать по алфавиту или по дате.
карма: 11

0
Ответов: 133
Рейтинг: 0
#7: 2024-09-21 06:14:53 ЛС | профиль | цитата
sla8a, ага, спасибо большое
карма: 1

0
Ответов: 782
Рейтинг: 168
#8: 2024-09-21 06:22:25 ЛС | профиль | цитата
sla8a писал(а):
sqlite как вариант

Я бы даже сказал так – Если выбрать sqlite, то есть шанс что помогут…

В базе надо создать несколько таблиц:
Клиенты, Работа, Детали, Заказы
карма: 15

0
Ответов: 133
Рейтинг: 0
#9: 2024-09-21 07:42:12 ЛС | профиль | цитата
Gunta, Да, я так и хотел. Но столкнулся с проблемой ) С SQlite я не работал от слова совсем и языка запросов её не знаю. Подскажите, вот это верный код для создания таблицы?


CREATE TABLE tab1 (
id INTEGER PRIMARY KEY AUTOINCREMENT NULL,
date TEXT NULL,
familia TEXT NULL,
works TEXT NULL,
result TEXT NULL,
);
карма: 1

0
Ответов: 782
Рейтинг: 168
#10: 2024-09-21 07:55:31 ЛС | профиль | цитата
Serascer писал(а):
Подскажите, вот это верный код для создания таблицы?

Почти....
CREATE TABLE [tab1](
[id] INTEGER PRIMARY KEY AUTOINCREMENT,
[date] DATE,
[familia] TEXT,
[works] TEXT,
[result] TEXT);


Квадратные кавычки можно не ставить

Редактировалось 1 раз(а), последний 2024-09-21 07:56:34
карма: 15

0
Ответов: 133
Рейтинг: 0
#11: 2024-09-21 08:11:01 ЛС | профиль | цитата
Gunta, большое спасибо, я просто использовал код из примеров в программе

--- Добавлено в 2024-09-21 08:27:25

А чем создать новый файл базы данных то?
Команда вроде
CREATE DATABASE имя базы
а каким именно элементом это делать?

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

Редактировалось 2 раз(а), последний 2024-09-21 08:45:53
карма: 1

0
Ответов: 782
Рейтинг: 168
#12: 2024-09-21 14:12:11 ЛС | профиль | цитата
Serascer писал(а):
А чем создать новый файл базы данных то?
Команда вроде
CREATE DATABASE имя базы
а каким именно элементом это делать?

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


Add(MainForm,8116350,196,119)
{
Width=463
Height=74
Caption="Созддание базы"
BorderStyle=1
Position=1
Point(onClose)
link(onCreate,6951000:doOpen,[])
link(onClose,6951000:doClose,[])
}
Add(DS_SQLite,6951000,252,133)
{
Name="mdb"
FileName="MyDB.db"
link(onOpen,16718266:doExec,[])
}
Add(Label,1738851,427,133)
{
Left=5
Top=5
Width=445
Caption=""
AutoSize=1
}
Add(DSC_Exec,16718266,308,133)
{
SQL="CREATE TABLE IF NOT EXISTS[tab1](\r\n [id] INTEGER PRIMARY KEY AUTOINCREMENT, \r\n [date] DATE, \r\n [familia] TEXT, \r\n [works] TEXT, \r\n [result] TEXT);\r\n"
DSManager="mdb"
link(onExec,1308006:doData,[])
}
Add(DoData,1308006,371,133)
{
Data=String(База создана и создана таблица)
link(onEventData,1738851:doText,[])
}

карма: 15

0
Ответов: 133
Рейтинг: 0
#13: 2024-09-21 15:30:54 ЛС | профиль | цитата
Gunta, большое спасибо! Подправил чуток и отлично вышло
карма: 1

0
Ответов: 133
Рейтинг: 0
#14: 2024-09-21 16:42:03 ЛС | профиль | цитата
Gunta, А вы можете объяснить пожалуйста, почему не отображается столбец Имя при запуске программы? Это код из примеров, я просто убрал цветовую раскраску таблицы

Add(MainForm,14842589,140,189)
{
Left=20
Top=105
Width=390
Height=322
Caption="SQLite_with_SQLiteDataSource"
Position=1
link(onCreate,12397080:dbRead,[])
}
Add(MTStrTbl,3870454,140,98)
{
Width=382
Height=263
Align=2
Name="mtst"
Layout="vert_1"
HeightScale=100
NIdxIcon=0
NColorRow=1
FlatScroll=1
ColDelimiter="_"
ColumnClick=1
ColorItems=0
Grid=0
SmallIconsManager="icm"
DrawManager="mtst_draw"
link(onClick,14726324:doData,[(180,104)(180,94)(135,94)(135,153)])
link(onColumnClick,11980953:doSort,[])
}
Add(MST_SortInCol,11980953,196,105)
{
MSTControl="mtst"
}
Add(MultiElementEx,12397080,196,203)
{
@Hint=#14:Read db SQLite|
link(onQuery,14744427:doText,[])
}
BEGIN_SDK
Add(EditMultiEx,11993176,21,21)
{
WorkCount=#6:dbRead|8:doSelect|
EventCount=#7:onQuery|
Width=370
Height=235
link(dbRead,7707573:doOpen,[(31,27)(31,48)])
link(doSelect,12509489:doString,[(26,34)(26,216)])
}
Add(Hub,4835456,98,42)
{
OutCount=3
link(onEvent1,11760390:doExec,[])
link(onEvent3,12956405:doQuery,[(122,62)(122,90)])
}
Add(DS_SQLite,7707573,49,42)
{
Name="sqlite_1"
FileName="test.db"
WaitClose=0
link(onOpen,4835456:doEvent1,[])
}
Add(DSC_Query,12956405,133,84)
{
SQL="SELECT id AS №,name AS Имя,tel AS Телефон,adr AS Адрес FROM "tab1";"
DSManager="sqlite_1"
link(onQuery,5392188:doAddRow,[])
link(onColumns,5392188:doAddCols,[])
}
Add(MST_DB,5392188,196,84)
{
MSTControl="parent.mtst"
}
Add(DSC_Exec,11760390,133,42)
{
SQL="CREATE TABLE tab1 (\r\nid INTEGER PRIMARY KEY AUTOINCREMENT,\r\nname TEXT,\r\ntel TEXT,\r\nadr TEXT);\r\nINSERT INTO "tab1" VALUES(1,'Пупкин Николай Владимирович','2123456','Москва');\r\nINSERT INTO "tab1" VALUES(2,'Витя','+79283052877','Киев');\r\nINSERT INTO "tab1" VALUES(3,'Оля','+79658348877','Орел');\r\nINSERT INTO "tab1" VALUES(4,'Олег','+79255679017','Москва');\r\nINSERT INTO "tab1" VALUES(5,'Тимофей','+79023174133','Москва');\r\nINSERT INTO "tab1" VALUES(6,'Виктор','567432','Брянск');\r\nINSERT INTO "tab1" VALUES(7,'Валентин','908070','Киев');\r\nINSERT INTO "tab1" VALUES(8,'Вячеслав','+79256173445','Москва');\r\nINSERT INTO "tab1" VALUES(9,'Леонид','+79333790876','Москва');\r\nINSERT INTO "tab1" VALUES(10,'Григорий','890890','Мурманск');\r\nINSERT INTO "tab1" VALUES(11,'Григорий','+79563777654','Уфа');\r\nINSERT INTO "tab1" VALUES(12,'nesco','461594','Сочи');"
DSManager="sqlite_1"
}
Add(DSC_QueryScalar,11859715,98,210)
{
DSManager="sqlite_1"
link(onQuery,11993176:onQuery,[(382,216)(382,27)])
}
Add(FormatStr,12509489,49,210)
{
DataCount=1
Mask="SELECT "name" FROM "tab1" WHERE id = %1 +1"
link(onFString,11859715:doQuery,[])
}
END_SDK
Add(Edit,14744427,245,203)
{
Top=265
Width=382
Color=12639424
Font=[MS Sans Serif,8,1,8388608,1]
Layout="vert_1"
Text=""
}
Add(DoData,14726324,147,147)
{
link(onEventData,12397080:doSelect,[(187,153)(187,216)])
link(Data,3870454:Index,[])
}
Add(VBoxLayout,905065,196,147)
{
Name="vert_1"
}

карма: 1

0
Ответов: 782
Рейтинг: 168
#15: 2024-09-21 17:34:31 ЛС | профиль | цитата
Serascer писал(а):
можете объяснить пожалуйста, почему не отображается столбец Имя при запуске программы?

Свойство NColorRow нужно выставить в -1


Add(MainForm,14842589,147,84)
{
Left=20
Top=105
Width=390
Height=322
Caption="SQLite_with_SQLiteDataSource"
Position=1
link(onCreate,12397080:dbRead,[])
}
Add(MTStrTbl,3870454,147,140)
{
Width=382
Height=263
Align=2
Name="mtst"
Layout="vert_1"
HeightScale=100
NIdxIcon=0
FlatScroll=1
ColDelimiter="_"
ColumnClick=1
ColorItems=0
Grid=0
SmallIconsManager="icm"
DrawManager="mtst_draw"
link(onClick,12397080:doSelect,[(186,146)(186,111)])
link(onColumnClick,11980953:doSort,[])
}
Add(MST_SortInCol,11980953,203,147)
{
MSTControl="mtst"
}
Add(MultiElementEx,12397080,203,98)
{
@Hint=#14:Read db SQLite|
link(onQuery,14744427:doText,[])
}
BEGIN_SDK
Add(EditMultiEx,11993176,21,21)
{
WorkCount=#6:dbRead|8:doSelect|
EventCount=#7:onQuery|
Width=370
Height=235
link(dbRead,7707573:doOpen,[(53,27)(53,48)])
link(doSelect,12509489:doString,[(46,34)(46,174)])
}
Add(Hub,4835456,112,42)
{
OutCount=3
link(onEvent1,11760390:doExec,[])
link(onEvent3,12956405:doQuery,[(136,62)(136,90)])
}
Add(DS_SQLite,7707573,63,42)
{
Name="sqlite_1"
FileName="test.db"
WaitClose=0
link(onOpen,4835456:doEvent1,[])
}
Add(DSC_Query,12956405,147,84)
{
SQL="SELECT id AS №,name AS Имя,tel AS Телефон,adr AS Адрес FROM tab1;"
DSManager="sqlite_1"
link(onQuery,5392188:doAddRow,[])
link(onColumns,5392188:doAddCols,[])
}
Add(MST_DB,5392188,259,84)
{
MSTControl="parent.mtst"
}
Add(DSC_Exec,11760390,147,42)
{
SQL="CREATE TABLE tab1 (\r\nid INTEGER PRIMARY KEY AUTOINCREMENT,\r\nname TEXT,\r\ntel TEXT,\r\nadr TEXT);\r\nINSERT INTO "tab1" VALUES(1,'Пупкин Николай Владимирович','2123456','Москва');\r\nINSERT INTO "tab1" VALUES(2,'Витя','+79283052877','Киев');\r\nINSERT INTO "tab1" VALUES(3,'Оля','+79658348877','Орел');\r\nINSERT INTO "tab1" VALUES(4,'Олег','+79255679017','Москва');\r\nINSERT INTO "tab1" VALUES(5,'Тимофей','+79023174133','Москва');\r\nINSERT INTO "tab1" VALUES(6,'Виктор','567432','Брянск');\r\nINSERT INTO "tab1" VALUES(7,'Валентин','908070','Киев');\r\nINSERT INTO "tab1" VALUES(8,'Вячеслав','+79256173445','Москва');\r\nINSERT INTO "tab1" VALUES(9,'Леонид','+79333790876','Москва');\r\nINSERT INTO "tab1" VALUES(10,'Григорий','890890','Мурманск');\r\nINSERT INTO "tab1" VALUES(11,'Григорий','+79563777654','Уфа');\r\nINSERT INTO "tab1" VALUES(12,'nesco','461594','Сочи');"
DSManager="sqlite_1"
}
Add(DSC_QueryScalar,11859715,189,168)
{
DSManager="sqlite_1"
link(onQuery,11993176:onQuery,[(382,174)(382,27)])
}
Add(FormatStr,12509489,133,168)
{
DataCount=1
Mask="SELECT "name" FROM "tab1" WHERE id = %1 + 1"
link(onFString,11859715:doQuery,[])
}
END_SDK
Add(Edit,14744427,252,98)
{
Top=265
Width=382
Color=12639424
Font=[MS Sans Serif,8,1,8388608,1]
Layout="vert_1"
Text=""
}
Add(VBoxLayout,905065,203,189)
{
Name="vert_1"
}

карма: 15

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)