Вверх ↑
Этот топик читают: Гость
Ответов: 148
Рейтинг: 0
#1: 2025-04-26 07:05:55 ЛС | профиль | цитата
Всем привет. Подскажите пожалуйста, а возможно сделать добавление в программу данных из таблицы Excel определенных столбцов? Мне вообще нужно реализовать вот что: есть список мониторов с разными характеристиками, каждую неделю появляется новый список в Excel, но там и старые модели и новые добавляются, в общем списки по составу разные всегда. И я хочу все их свести в одну базу, чтобы добавлялись туда только новые модели. Т.е. чтобы брался файл Excel, анализировался и в базу добавлялись только те строки, где новые модели, которых нет в моей базе. Проверять можно по одному столбцу, там партномер мониторов.

Вот файл Excel для примера.
https://forum.hiasm.com/getfile/40570

Редактировалось 3 раз(а), последний 2025-04-26 07:07:58
карма: 1

0
Ответов: 892
Рейтинг: 190
#2: 2025-04-26 07:50:05 ЛС | профиль | цитата
Serascer писал(а):
возможно сделать добавление в программу данных из таблицы Excel определенных столбцов?

Подскажи какие столбцы тебе нужны в твоей базе из excel?
Файл Excel всегда .xlsx или бывает .xls?
Serascer писал(а):
я хочу все их свести в одну базу, чтобы добавлялись туда только новые модели

Что такое «одна база»? Это просто Таблица в HIAsm, SQLite или что-то другое?
карма: 18

0
Ответов: 148
Рейтинг: 0
#3: 2025-04-26 08:14:11 ЛС | профиль | цитата
Gunta, Партномер/Модель/Регулировка по высоте, мм/Портретный режим/Описание, вроде всегда xlsx были файлы. На счет базы что подойдет получше, то и можно использовать )
карма: 1

0
Ответов: 8948
Рейтинг: 824
#4: 2025-04-26 13:08:36 ЛС | профиль | цитата
Serascer,
не надо отдельной программы, в Excel всё есть, для осуществления вашей задумки
Добавьте лист, в назначенной я ячейке введите название добавляемого устройства и макросом проверьте на наличие его в списке.
карма: 19

0
Ответов: 148
Рейтинг: 0
#5: 2025-04-26 13:17:26 ЛС | профиль | цитата
Леонид, а что за макрос?
карма: 1

0
Ответов: 892
Рейтинг: 190
#6: 2025-04-26 14:00:33 ЛС | профиль | цитата
Serascer писал(а):
Партномер/Модель/Регулировка по высоте, мм/Портретный режим/Описание, вроде всегда xlsx были файлы. На счет базы что подойдет получше, то и можно использовать )

Вот тебе для начала. Если что-то будет непонятно спрашивай.
Всё разархивируй в одну папку
https://disk.yandex.ru/d/Niad7MvWgiQlWg

Редактировалось 1 раз(а), последний 2025-04-26 14:06:10
карма: 18

0
Ответов: 148
Рейтинг: 0
#7: 2025-04-26 14:53:50 ЛС | профиль | цитата
Gunta, большое спасибо! Есть вопрос, а нельзя сделать сперва создание файла базы данных, если его нет и потом уже добавлять туда данные?
Я планирую совместить ваш код с другой моей программой )
Буду рад если поможете.
Add(MainForm,2953706,140,105)
{
Width=1416
Height=819
Caption="База ремонтов"
BorderStyle=1
Position=1
Point(onClose)
link(onCreate,6126171:doOpen,[])
link(onClose,6126171:doClose,[])
}
Add(Button,2538230,189,224)
{
Left=10
Top=10
Width=110
Caption="Добавить"
link(onClick,3731829:doWork1,[])
}
Add(MTStrTbl,947388,140,161)
{
Left=10
Top=40
Width=1380
Height=305
Name="mtst"
Columns=#4:№=40|7:Дата=70|11:Фамилия=300|11:Телефон=100|12:Описание=400|10:Работа=400|8:Сумма=65|
ChangeWidth=1
Point(onMouseDown)
link(onClick,6602222:doWork1,[(198,167)(198,398)])
}
Add(Button,15445199,175,497)
{
Left=370
Top=10
Width=110
Caption="Поиск"
link(onClick,382362:doWork1,[])
}
Add(DS_SQLite,6126171,294,119)
{
Name="mdb"
FileName="Clients.db"
WaitClose=0
link(onOpen,7203295:doExec,[])
}
Add(DSC_Exec,7203295,350,119)
{
SQL="CREATE TABLE IF NOT EXISTS[tab1](\r\n [id] INTEGER PRIMARY KEY AUTOINCREMENT, \r\n [date] TEXT, \r\n [familia] TEXT, \r\n [tel] TEXT, \r\n [opisanie] TEXT, \r\n [work] TEXT, \r\n [summa] TEXT);"
DSManager="mdb"
link(onExec,8256804:doEvent1,[])
}
Add(DSC_Query,301125,455,126)
{
SQL="SELECT\r\n id, \r\n date,\r\n familia,\r\n tel,\r\n opisanie,\r\n work,\r\n summa \r\nFROM tab1;\r\n"
DSManager="mdb"
link(onQuery,5887078:doAddRow,[])
}
Add(MST_DB,5887078,511,126)
{
MSTControl="mtst"
}
Add(Hub,8256804,406,119)
{
InCount=4
OutCount=3
link(onEvent1,15751595:doClear,[(430,125)(430,90)])
link(onEvent2,301125:doQuery,[])
link(onEvent3,13789751:doSortDigit,[(438,139)(438,181)])
}
Add(MST_Clear,15751595,455,84)
{
MSTControl="mtst"
}
Add(MST_SortInCol,13789751,455,168)
{
MethodSort=1
MSTControl="mtst"
Point(doSortDigit)
}
Add(ChildForm,3731829,238,224)
{
link(onEvent1,8256804:doEvent2,[(338,230)(338,132)])
}
BEGIN_SDK
Add(EditMulti,1491838,21,14)
{
EventCount=1
WorkCount=1
Width=573
Height=291
link(doWork1,475173:doEvent1,[(67,20)(67,62)])
}
Add(MainForm,13367302,119,28)
{
Left=35
Top=105
Width=906
Height=338
Visible=1
Position=3
Point(doVisible)
link(onDeactivate,5050124:doEvent1,[(341,41)(341,55)])
}
Add(Button,1416819,154,189)
{
Left=390
Top=255
Width=110
Height=30
Font=[MS Sans Serif,8,1,0,1]
TabOrder=7
Caption="Добавить"
link(onClick,10677720:doEvent1,[])
}
Add(Edit,13718670,266,112)
{
Left=130
Top=30
Width=310
TabOrder=2
Text=" "
}
Add(Label,10493128,224,28)
{
Left=10
Top=5
Width=30
Height=17
Caption="Дата"
}
Add(DSC_Exec,12580462,301,189)
{
DSManager="parent.mdb"
link(onExec,2150116:doEvent1,[])
}
Add(Label,8723371,266,70)
{
Left=130
Top=10
Width=53
Height=17
Caption="Фамилия"
}
Add(Label,10818380,350,70)
{
Left=5
Top=60
Width=54
Height=17
Caption="Описание"
}
Add(Label,7006651,392,70)
{
Left=450
Top=60
Width=40
Height=17
Caption="Работа"
}
Add(Edit,10926788,434,112)
{
Left=5
Top=220
Width=120
TabOrder=6
Text=""
DataType=1
}
Add(Label,14976561,434,70)
{
Left=5
Top=200
Width=39
Height=17
Caption="Сумма"
}
Add(DateConvertor,5015877,224,112)
{
Mode=9
Format="dd-MM-yyyy"
Point(Result)
Point(Data)
link(Data,12298793:DateTime,[(230,107)(237,107)])
}
Add(FormatStr,15597162,224,189)
{
DataCount=6
Mask="INSERT\r\nINTO\r\n [tab1](\r\n [date],\r\n [familia],\r\n [tel],\r\n [opisanie],\r\n [work],\r\n [summa])\r\nVALUES(\r\n '%1',\r\n '%2',\r\n '%3',\r\n '%4',\r\n '%5',\r\n %6);\r\n"
link(onFString,12580462:doExec,[])
link(Str1,5015877:Result,[])
link(Str2,13718670:Text,[(237,152)(272,152)])
link(Str3,338662:Text,[(244,167)(314,167)])
link(Str4,16548127:Text,[(251,173)(356,173)])
link(Str5,14009995:Text,[(258,181)(398,181)])
link(Str6,10926788:Text,[(265,167)(440,167)])
}
Add(Hub,2150116,378,189)
{
link(onEvent1,1491838:onEvent1,[(466,195)(466,20)])
link(onEvent2,14722169:doDeferredEvent,[(410,202)(410,230)])
}
Add(DoData,7108916,476,224)
{
Data=Integer(0)
link(onEventData,475173:doEvent2,[(521,230)(521,274)(67,274)(67,69)])
}
Add(DeferredEvent,14722169,420,224)
{
link(onDeferredEvent,7108916:doData,[])
}
Add(Hub,475173,77,56)
{
InCount=2
link(onEvent1,13367302:doVisible,[])
link(onEvent2,3131699:doWork1,[(109,69)(109,97)(186,97)])
}
Add(Time,12298793,224,70)
{
Time_Date=1
Format="D M:Y"
Point(DateTime)
}
Add(HubEx,3131699,182,112)
{
link(onEvent,5015877:doConvert,[])
}
Add(DatePicker,11740223,112,112)
{
Left=5
Top=30
Width=115
Height=21
TabOrder=1
link(onChange,3131699:doWork2,[])
}
Add(Edit,338662,308,112)
{
Left=450
Top=30
Width=180
TabOrder=3
Text=" "
}
Add(Label,7630534,308,70)
{
Left=450
Top=10
Width=49
Height=17
Caption="Телефон"
}
Add(Memo,16548127,350,112)
{
Left=5
Top=80
Width=435
Height=110
TabOrder=4
ScrollBars=2
}
Add(Memo,14009995,392,112)
{
Left=450
Top=80
Width=435
Height=110
TabOrder=5
ScrollBars=2
}
Add(Hub,10677720,196,189)
{
InCount=2
link(onEvent1,15597162:doString,[])
}
Add(Hub,5050124,532,49)
{
OutCount=5
link(onEvent1,13718670:doText,[(558,55)(558,87)(254,87)(254,118)])
link(onEvent2,338662:doText,[(558,62)(558,90)(296,90)(296,118)])
link(onEvent3,16548127:doClear,[(558,69)(558,97)(338,97)(338,125)])
link(onEvent4,14009995:doClear,[(558,76)(558,100)(380,100)(380,125)])
link(onEvent5,10926788:doText,[(558,83)(558,101)(422,101)(422,118)])
}
END_SDK
Add(ChildForm,39975,238,308)
{
link(onEvent1,8256804:doEvent3,[(338,314)(338,139)])
link(Data1,2754020:Var3,[(244,229)])
}
BEGIN_SDK
Add(EditMulti,13011679,21,14)
{
EventCount=1
WorkCount=1
DataCount=1
Width=797
Height=480
link(doWork1,5832317:doEvent1,[(67,20)(67,62)])
}
Add(MainForm,928490,119,28)
{
Left=35
Top=105
Width=906
Height=338
Visible=1
Caption="Изменить"
Position=3
Point(doVisible)
link(onDeactivate,165549:doEvent1,[(237,41)(237,90)])
}
Add(Button,12215766,203,301)
{
Left=390
Top=255
Width=110
Height=30
Font=[MS Sans Serif,8,1,0,1]
Caption="Изменить"
link(onClick,3129647:doString,[])
}
Add(Edit,14344690,329,224)
{
Left=130
Top=30
Width=310
TabOrder=1
Text=""
}
Add(Label,8784403,245,98)
{
Left=5
Top=30
Width=57
Height=29
Font=[MS Sans Serif,15,1,0,1]
Caption="Дата"
}
Add(DSC_Exec,6409374,413,301)
{
DSManager="parent.mdb"
link(onExec,3089475:doEvent1,[])
}
Add(Label,3803848,329,182)
{
Left=130
Top=10
Width=53
Height=17
Caption="Фамилия"
}
Add(Label,3257238,476,182)
{
Left=5
Top=60
Width=54
Height=17
Caption="Описание"
}
Add(Label,10297054,546,182)
{
Left=450
Top=60
Width=40
Height=17
Caption="Работа"
}
Add(Edit,6100857,623,224)
{
Left=5
Top=220
Width=120
TabOrder=5
Text=""
DataType=1
}
Add(Label,10505365,623,182)
{
Left=5
Top=200
Width=39
Height=17
Caption="Сумма"
}
Add(FormatStr,3129647,301,301)
{
DataCount=7
Mask="UPDATE\r\n [tab1]\r\nSET\r\n [familia] = '%2',\r\n [tel] = '%3',\r\n [opisanie] = '%4',\r\n [work] = '%5',\r\n [summa] = '%6'\r\nWHERE\r\n [id] = %7;"
link(onFString,6409374:doExec,[])
link(Str2,14344690:Text,[(314,264)(335,264)])
link(Str3,11779834:Text,[(321,279)(412,279)])
link(Str4,5865310:Text,[(328,279)(482,279)])
link(Str5,4745230:Text,[(335,279)(552,279)])
link(Str6,6100857:Text,[(342,279)(629,279)])
link(Str7,4755838:Value,[(349,279)(244,279)])
}
Add(Hub,3089475,476,301)
{
link(onEvent1,13011679:onEvent1,[(466,307)(466,20)])
link(onEvent2,2868402:doDeferredEvent,[(511,314)(511,342)])
}
Add(DoData,8975738,588,336)
{
Data=Integer(0)
link(onEventData,5832317:doEvent2,[(625,342)(625,206)(65,206)(65,69)])
}
Add(DeferredEvent,2868402,532,336)
{
link(onDeferredEvent,8975738:doData,[])
}
Add(Hub,5832317,77,56)
{
InCount=2
OutCount=3
link(onEvent1,928490:doVisible,[])
link(onEvent2,8170284:doSeparateMT,[(129,69)(129,139)])
}
Add(MT_MultiData,8170284,168,133)
{
Count=7
Point(Data)
Point(RemaindData)
link(onData1,4755838:doValue,[(219,139)(219,230)])
link(onData2,8784403:doText,[(212,146)(212,104)])
link(onData3,13673241:doEvent1,[(250,153)(250,244)])
link(onData4,8396933:doEvent1,[(289,160)(289,244)])
link(onData5,12048984:doEvent1,[(310,167)(310,237)])
link(onData6,12539875:doEvent1,[(342,174)(342,237)])
link(onData7,4296773:doEvent1,[(398,181)(398,244)])
link(Data,13011679:Data1,[(174,73)(27,73)])
}
Add(Memory,4755838,238,224)
{
}
Add(Label,2151521,245,56)
{
Left=5
Top=10
Width=30
Height=17
Caption="Дата"
}
Add(Edit,11779834,406,224)
{
Left=450
Top=30
Width=180
TabOrder=2
Text=""
}
Add(Label,3672410,406,182)
{
Left=450
Top=10
Width=49
Height=17
Caption="Телефон"
}
Add(Memo,5865310,476,224)
{
Left=5
Top=80
Width=435
Height=110
TabOrder=3
ScrollBars=2
}
Add(Memo,4745230,546,224)
{
Left=450
Top=80
Width=435
Height=110
TabOrder=4
ScrollBars=2
}
Add(Hub,12048984,448,231)
{
InCount=2
link(onEvent1,5865310:doClear,[])
link(onEvent2,5865310:doAdd,[(469,244)(469,230)])
}
Add(Hub,12539875,518,231)
{
InCount=2
link(onEvent1,4745230:doClear,[])
link(onEvent2,4745230:doAdd,[(539,244)(539,230)])
}
Add(Hub,165549,322,84)
{
OutCount=5
link(onEvent1,13673241:doEvent2,[(348,90)(348,170)(289,170)(289,251)])
link(onEvent2,8396933:doEvent2,[(357,97)(357,251)])
link(onEvent3,12048984:doEvent2,[(392,104)(392,244)])
link(onEvent4,12539875:doEvent2,[(427,111)(427,244)])
link(onEvent5,4296773:doEvent2,[(466,118)(466,251)])
}
Add(Hub,13673241,301,238)
{
InCount=2
OutCount=1
link(onEvent1,14344690:doText,[(322,244)(322,230)])
}
Add(Hub,8396933,378,238)
{
InCount=2
OutCount=1
link(onEvent1,11779834:doText,[(399,244)(399,230)])
}
Add(Hub,4296773,595,238)
{
InCount=2
OutCount=1
link(onEvent1,6100857:doText,[(616,244)(616,230)])
}
END_SDK
Add(GetDataEx,2754020,161,224)
{
Angle=3
link(Data,947388:Select,[(146,229)])
}
Add(ChildGroupBox,6602222,224,392)
{
link(Data1,2754020:Var1,[(230,218)(167,218)])
}
BEGIN_SDK
Add(EditMulti,7158192,21,21)
{
WorkCount=1
DataCount=1
Width=797
Height=550
link(doWork1,10638613:doSeparateMT,[(67,27)(67,111)(164,118)(164,188)])
}
Add(GroupBox,11911772,35,35)
{
Left=10
Top=360
Width=895
Height=410
Caption=""
}
Add(Label,11604296,280,105)
{
Left=5
Top=10
Width=30
Height=17
Caption="Дата"
}
Add(Edit,11671383,399,273)
{
Left=130
Top=30
Width=310
Enabled=1
Text=""
ReadOnly=0
}
Add(Label,8815771,280,147)
{
Left=5
Top=30
Width=57
Height=29
Font=[MS Sans Serif,15,1,0,1]
Caption="Дата"
}
Add(Label,5413725,399,231)
{
Left=130
Top=10
Width=53
Height=17
Caption="Фамилия"
}
Add(Label,8424378,518,231)
{
Left=5
Top=60
Width=54
Height=17
Caption="Описание"
}
Add(Label,11726734,595,231)
{
Left=450
Top=60
Width=40
Height=17
Caption="Работа"
}
Add(Edit,2308080,637,273)
{
Left=5
Top=220
Width=120
Enabled=1
Text=""
DataType=1
ReadOnly=0
}
Add(Label,881908,637,231)
{
Left=5
Top=200
Width=39
Height=17
Caption="Сумма"
}
Add(MT_MultiData,10638613,203,182)
{
Count=7
Point(Data)
Point(RemaindData)
link(onData2,8815771:doText,[(247,195)(247,153)])
link(onData3,11671383:doText,[(296,202)(296,279)])
link(onData4,13541262:doText,[(338,209)(338,279)])
link(onData5,4314303:doEvent1,[(369,216)(369,286)])
link(onData6,7733950:doEvent1,[(411,223)(411,286)])
link(onData7,2308080:doText,[(401,230)(401,279)])
link(Data,7158192:Data1,[(209,102)(27,102)])
}
Add(Edit,13541262,441,273)
{
Left=450
Top=30
Width=180
Enabled=1
Text=""
ReadOnly=0
}
Add(Label,1608245,441,231)
{
Left=450
Top=10
Width=49
Height=17
Caption="Телефон"
}
Add(Memo,2378169,518,273)
{
Left=5
Top=80
Width=435
Height=110
ScrollBars=2
ReadOnly=0
}
Add(Memo,15058833,595,273)
{
Left=450
Top=80
Width=435
Height=110
ScrollBars=2
ReadOnly=0
}
Add(Hub,4314303,483,280)
{
link(onEvent1,2378169:doClear,[])
link(onEvent2,2378169:doAdd,[(507,293)(507,279)])
}
Add(Hub,7733950,560,280)
{
link(onEvent1,15058833:doClear,[])
link(onEvent2,15058833:doAdd,[(584,293)(584,279)])
}
END_SDK
Add(ChildForm,382362,217,497)
{
}
BEGIN_SDK
Add(EditMulti,740293,21,14)
{
EventCount=1
WorkCount=1
DataCount=1
Width=797
Height=480
link(doWork1,6789909:doVisible,[(67,20)(67,62)])
}
Add(MainForm,6789909,140,28)
{
Left=35
Top=105
Width=1416
Height=759
Visible=1
Position=3
Point(doVisible)
Point(onClose)
link(onClose,7936292:doClear,[(278,55)(278,97)])
}
Add(Button,8958237,203,154)
{
Left=10
Top=70
Width=110
Height=30
Font=[MS Sans Serif,8,1,0,1]
Caption="Искать"
link(onClick,10677122:doString,[])
}
Add(Edit,5217928,259,112)
{
Left=10
Top=30
Width=310
Text=""
}
Add(Label,2720308,259,70)
{
Left=10
Top=10
Width=53
Height=17
Caption="Фамилия"
}
Add(FormatStr,10677122,259,154)
{
DataCount=1
Mask="SELECT id, date, familia, tel, opisanie, work, summa FROM tab1 WHERE familia LIKE '^%1^'"
link(onFString,7157604:doReplace,[])
link(Str1,5217928:Text,[])
}
Add(MTStrTbl,9246759,112,147)
{
Left=10
Top=110
Width=1380
Height=180
Name="mtstsearch"
Columns=#4:№=40|7:Дата=70|11:Фамилия=300|11:Телефон=100|12:Описание=400|10:Работа=400|8:Сумма=65|
ChangeWidth=1
Point(doSetFocus)
Point(Row)
Point(onDblClick)
link(onClick,5804836:doWork1,[(152,153)(152,223)])
}
Add(MST_DB,11513766,448,154)
{
MSTControl="mtstsearch"
}
Add(MST_Clear,7936292,385,91)
{
MSTControl="mtstsearch"
}
Add(Replace,7157604,322,154)
{
SubStr="^"
DestStr="%"
link(onReplace,2595244:doQuery,[])
}
Add(DSC_Query,2595244,385,154)
{
DSManager="parent.mdb"
link(onQuery,11513766:doAddRow,[])
}
Add(Edit,2992831,259,259)
{
Left=380
Top=30
Width=310
Text=""
}
Add(Label,10230231,259,217)
{
Left=380
Top=10
Width=49
Height=17
Caption="Телефон"
}
Add(Button,12181062,217,301)
{
Left=380
Top=65
Width=110
Height=30
Font=[MS Sans Serif,8,1,0,1]
Caption="Искать"
link(onClick,9994550:doString,[])
}
Add(FormatStr,9994550,259,301)
{
DataCount=1
Mask="SELECT id, date, familia, tel, opisanie, work, summa FROM tab1 WHERE tel LIKE '^%1^'"
link(onFString,1808222:doReplace,[])
link(Str1,2992831:Text,[])
}
Add(MST_DB,1556406,448,301)
{
MSTControl="mtstsearch"
}
Add(Replace,1808222,322,301)
{
SubStr="^"
DestStr="%"
link(onReplace,227670:doQuery,[])
}
Add(DSC_Query,227670,385,301)
{
DSManager="parent.mdb"
link(onQuery,1556406:doAddRow,[])
}
Add(ChildGroupBox,5804836,161,217)
{
link(Data1,9246759:Select,[(167,201)(118,201)])
}
BEGIN_SDK
Add(EditMulti,16335083,21,21)
{
WorkCount=1
DataCount=1
Width=797
Height=550
link(doWork1,16079741:doSeparateMT,[(67,27)(67,111)(164,118)(164,188)])
}
Add(GroupBox,9125319,35,35)
{
Left=10
Top=300
Width=895
Height=410
Caption=""
}
Add(Label,777029,280,105)
{
Left=5
Top=10
Width=30
Height=17
Caption="Дата"
}
Add(Edit,12525761,399,273)
{
Left=130
Top=30
Width=310
Text=""
ReadOnly=0
}
Add(Label,1738305,280,147)
{
Left=5
Top=30
Width=57
Height=29
Font=[MS Sans Serif,15,1,0,1]
Caption="Дата"
}
Add(Label,16581666,399,231)
{
Left=130
Top=10
Width=53
Height=17
Caption="Фамилия"
}
Add(Label,16500743,483,231)
{
Left=5
Top=60
Width=54
Height=17
Caption="Описание"
}
Add(Label,9936782,525,231)
{
Left=450
Top=60
Width=40
Height=17
Caption="Работа"
}
Add(Edit,2090202,567,273)
{
Left=5
Top=220
Width=120
Enabled=1
Text=""
DataType=1
ReadOnly=0
}
Add(Label,7769607,567,231)
{
Left=5
Top=200
Width=39
Height=17
Caption="Сумма"
}
Add(MT_MultiData,16079741,203,182)
{
Count=7
Point(Data)
Point(RemaindData)
link(onData2,1738305:doText,[(247,195)(247,153)])
link(onData3,12525761:doText,[(321,202)(321,279)])
link(onData4,14363825:doText,[(338,209)(338,279)])
link(onData5,3643619:doAdd,[(369,216)(369,279)])
link(onData6,10639360:doAdd,[(391,223)(391,279)])
link(onData7,2090202:doText,[(401,230)(401,279)])
link(Data,16335083:Data1,[(209,102)(27,102)])
}
Add(Edit,14363825,441,273)
{
Left=450
Top=30
Width=180
Text=""
}
Add(Label,12376104,441,231)
{
Left=450
Top=10
Width=49
Height=17
Caption="Телефон"
}
Add(Memo,3643619,483,273)
{
Left=5
Top=80
Width=435
Height=110
ScrollBars=2
ReadOnly=0
}
Add(Memo,10639360,525,273)
{
Left=450
Top=80
Width=435
Height=110
ScrollBars=2
ReadOnly=0
}
END_SDK
END_SDK
Add(DSC_Exec,1323004,455,490)
{
DSManager="mdb"
link(onExec,8256804:doEvent4,[(499,496)(499,321)(394,321)(394,146)])
}
Add(MT_MultiData,16559659,273,441)
{
Count=7
Point(Data)
Point(RemaindData)
link(onData1,9357416:doValue,[])
link(Data,2754020:Var2,[(279,320)(167,320)])
}
Add(Memory,9357416,343,441)
{
link(onData,3292723:doString,[(383,447)(383,496)])
}
Add(FormatStr,3292723,392,490)
{
DataCount=1
Mask="DELETE\r\nFROM\r\n [tab1]\r\nWHERE\r\n [id] = %1;"
link(onFString,1323004:doExec,[])
link(Str1,9357416:Value,[(398,482)(349,482)])
}
Add(PopupMenu,15198874,532,217)
{
Menu=#8:Изменить|7:Удалить|0:|
link(onClick,1907426:doEvent,[])
}
Add(DeferredEvent,9633104,483,217)
{
link(onDeferredEvent,15198874:doPopupHere,[])
}
Add(IndexToChanel,1907426,588,217)
{
}
Add(IndexToChanel,7623674,434,210)
{
link(onEvent2,9633104:doDeferredEvent,[])
}
Add(Message,2780906,210,434)
{
Message="Вы уверены что хотите удалить запись"
Caption="Внимание"
Type=2
Icon=1
DefButton=1
Point(onYES)
link(onYES,16559659:doSeparateMT,[])
}
Add(Button,12309514,189,308)
{
Left=130
Top=10
Width=110
Caption="Изменить"
link(onClick,39975:doWork1,[])
}
Add(ButtonRush,777265,161,434)
{
Left=250
Top=10
Width=110
Height=20
Font=[MS Sans Serif,8,1,0,1]
ColorFrom=255
ColorFromOver=255
ColorFromDown=255
Caption="Удалить"
Glyphs=[]
link(onClick,2780906:doMessage,[])
}

Редактировалось 1 раз(а), последний 2025-04-26 15:05:45
карма: 1

0
Ответов: 892
Рейтинг: 190
#8: 2025-04-26 15:22:02 ЛС | профиль | цитата
Serascer писал(а):
а нельзя сделать сперва создание файла базы данных

Можно. положи эту схему в туже папку, удали файл MyDB.db. Запусти схему.
Add(MainForm,4060584,357,217)
{
Width=996
Height=395
Point(onClose)
link(onCreate,13411267:doOpen,[])
link(onClose,13411267:doClose,[])
}
Add(Label,12422937,182,294)
{
Width=980
Height=50
Align=2
Caption=""
AutoSize=1
}
Add(Button,9429861,301,294)
{
Left=10
Top=15
Width=120
Caption="Add New from Excel"
link(onClick,12479767:doExecute,[])
}
Add(Edit,10850546,406,294)
{
Left=160
Top=15
Width=305
Text=""
ReadOnly=0
link(onChange,3595730:doWork,[])
}
Add(ODialog,12479767,357,294)
{
Filter="Excel|*.xlsx"
link(onExecute,10850546:doText,[])
}
Add(DS_SQLite,13411267,406,231)
{
Name="fromExcel"
FileName="MyDB.db"
link(onOpen,10856566:doExec,[])
}
Add(MTStrTbl,3086052,231,294)
{
Width=506
Height=244
Align=5
Name="tabl"
Columns=#9:Партномер|6:Модель|25:Регулировка по высоте, мм|16:Портретный режим|8:Описание|
ColorItems=0
Redaction=0
Grid=0
}
Add(MST_DB,2969440,630,210)
{
MSTControl="tabl"
}
Add(DSC_Query,15295346,574,210)
{
SQL="SELECT\r\n [PartNumber], \r\n [Model], \r\n [Height_adjustment], \r\n [Portrait_mode], \r\n [Description]\r\nFROM\r\n [Serascer]\r\n;\r\n"
DSManager="fromExcel"
link(onQuery,2969440:doAddRow,[])
}
Add(DSC_Query,14013266,574,126)
{
SQL="SELECT\r\n"Количество записей в базе - " || COUNT(*)\r\nFROM\r\n [Serascer]\r\n;\r\n"
DSManager="fromExcel"
link(onQuery,4060584:doCaption,[(618,132)(618,94)(347,94)(347,223)])
}
Add(Hub,14561010,518,231)
{
InCount=2
OutCount=4
link(onEvent1,14013266:doQuery,[(543,237)(543,132)])
link(onEvent2,3674884:doClear,[(550,244)(550,174)])
link(onEvent3,15295346:doQuery,[(557,251)(557,216)])
link(onEvent4,15121271:doColAction,[])
}
Add(VBJScript,3595730,455,294)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doWork|
EventPoints=#6:onRead|7:onClear|6:onStop|
Script=#10:Dim strOut|22:Sub doWork(Data,Index)|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|19: sys.onClear nil|4: |17: ' Лист1.Select|38: 'objExcel.Sheets("Итоговое").Select|43: objExcel.ActiveSheet.Cells(1, 1).Select |5: |33: intRow = 2 ' начальная строка|4: |51: Do Until objExcel.Cells(intRow,1).Value = "" |121: strOut = "INSERT OR IGNORE INTO [Serascer] VALUES(" & "'" & objExcel.Cells(intRow, 1).Value & "'" & "," & "'" &_ |61: objExcel.Cells(intRow, 3).Value & "'" & "," & "'" &_ |60: objExcel.Cells(intRow, 9).Value & "'" & "," & "'" &_|61: objExcel.Cells(intRow, 12).Value & "'" & "," & "'" &_|48: objExcel.Cells(intRow, 17).Value & "');"|26: sys.onRead strOut |27: intRow = intRow + 1|19: strOut = ""|8: Loop|4: |17: objExcel.Quit|22: sys.onStop nil |0:|7:End Sub|
UseName=0
link(onRead,4246386:doExec,[])
link(onStop,14561010:doEvent2,[(501,314)(501,244)])
}
Add(DSC_Exec,4246386,525,294)
{
DSManager="fromExcel"
}
Add(MST_ColAction,15121271,574,252)
{
Action=9
MaxColWidth=1000
Index=-2
MSTControl="tabl"
}
Add(DSC_Exec,10856566,455,231)
{
SQL="CREATE TABLE IF NOT EXISTS "Serascer"(\r\n [PartNumber] CHAR(12) UNIQUE, \r\n [Model] CHAR(25), \r\n [Height_adjustment] CHAR(3), \r\n [Portrait_mode] CHAR(7), \r\n [Description] CHAR);"
DSManager="fromExcel"
link(onExec,14561010:doEvent1,[])
}
Add(MST_Clear,3674884,574,168)
{
MSTControl="tabl"
}



Твою схему чуть позже посмотрю.

Редактировалось 1 раз(а), последний 2025-04-26 15:39:16
карма: 18

1
Голосовали:Serascer
Ответов: 148
Рейтинг: 0
#9: 2025-04-26 16:28:42 ЛС | профиль | цитата
Gunta, огромное спасибо! С этим уже можно много чего наворотить )

--- Добавлено в 2025-04-26 17:11:19

Пока остановился на этом варианте ) Потом может дополню, если будет потребность.
Add(MainForm,4060584,539,189)
{
Width=1017
Height=690
Caption="Таблица мониторов"
BorderStyle=1
Point(onClose)
link(onCreate,13411267:doOpen,[])
link(onClose,13411267:doClose,[])
}
Add(Button,9429861,553,266)
{
Left=10
Top=10
Width=125
Caption="Добавить новый файл"
link(onClick,12479767:doExecute,[])
}
Add(ODialog,12479767,595,266)
{
Filter="Excel|*.xlsx"
link(onExecute,3595730:doWork,[])
}
Add(DS_SQLite,13411267,588,203)
{
Name="fromExcel"
FileName="MyDB.db"
link(onOpen,10856566:doExec,[])
}
Add(MTStrTbl,3086052,231,154)
{
Left=10
Top=40
Width=980
Height=417
Name="tabl"
Columns=#9:Партномер|6:Модель|21:Регулировка по высоте|16:Портретный режим|8:Описание|
ColorItems=0
Redaction=0
Grid=0
link(onClick,10638613:doSeparateMT,[(279,160)(279,202)])
}
Add(MST_DB,2969440,812,182)
{
MSTControl="tabl"
}
Add(DSC_Query,15295346,756,182)
{
SQL="SELECT\r\n [PartNumber], \r\n [Model], \r\n [Height_adjustment], \r\n [Portrait_mode], \r\n [Description]\r\nFROM\r\n [Serascer]\r\n;\r\n"
DSManager="fromExcel"
link(onQuery,2969440:doAddRow,[])
}
Add(DSC_Query,14013266,756,98)
{
SQL="SELECT\r\n"Количество записей в базе - " || COUNT(*)\r\nFROM\r\n [Serascer]\r\n;\r\n"
DSManager="fromExcel"
link(onQuery,4060584:doCaption,[(800,104)(800,66)(529,66)(529,195)])
}
Add(Hub,14561010,700,203)
{
InCount=2
OutCount=4
link(onEvent1,14013266:doQuery,[(725,209)(725,104)])
link(onEvent2,3674884:doClear,[(732,216)(732,146)])
link(onEvent3,15295346:doQuery,[(739,223)(739,188)])
link(onEvent4,15121271:doColAction,[])
}
Add(VBJScript,3595730,637,266)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doWork|
EventPoints=#6:onRead|7:onClear|6:onStop|
Script=#10:Dim strOut|22:Sub doWork(Data,Index)|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|19: sys.onClear nil|4: |17: ' Лист1.Select|38: 'objExcel.Sheets("Итоговое").Select|43: objExcel.ActiveSheet.Cells(1, 1).Select |5: |33: intRow = 2 ' начальная строка|4: |51: Do Until objExcel.Cells(intRow,1).Value = "" |121: strOut = "INSERT OR IGNORE INTO [Serascer] VALUES(" & "'" & objExcel.Cells(intRow, 1).Value & "'" & "," & "'" &_ |61: objExcel.Cells(intRow, 3).Value & "'" & "," & "'" &_ |60: objExcel.Cells(intRow, 9).Value & "'" & "," & "'" &_|61: objExcel.Cells(intRow, 12).Value & "'" & "," & "'" &_|48: objExcel.Cells(intRow, 17).Value & "');"|26: sys.onRead strOut |27: intRow = intRow + 1|19: strOut = ""|8: Loop|4: |17: objExcel.Quit|22: sys.onStop nil |0:|7:End Sub|
UseName=0
link(onRead,4246386:doExec,[])
link(onStop,14561010:doEvent2,[(683,286)(683,216)])
}
Add(DSC_Exec,4246386,693,266)
{
DSManager="fromExcel"
}
Add(MST_ColAction,15121271,756,224)
{
Action=9
MinColWidth=140
MaxColWidth=1000
Index=-2
MSTControl="tabl"
}
Add(DSC_Exec,10856566,637,203)
{
SQL="CREATE TABLE IF NOT EXISTS "Serascer"(\r\n [PartNumber] CHAR(12) UNIQUE, \r\n [Model] CHAR(25), \r\n [Height_adjustment] CHAR(3), \r\n [Portrait_mode] CHAR(7), \r\n [Description] CHAR);"
DSManager="fromExcel"
link(onExec,14561010:doEvent1,[])
}
Add(MST_Clear,3674884,756,140)
{
MSTControl="tabl"
}
Add(Button,15445199,553,364)
{
Left=160
Top=10
Width=125
Caption="Поиск парт. номера"
link(onClick,4099803:doAdd,[])
}
Add(Edit,5217928,595,322)
{
Left=295
Top=10
Width=110
Text=""
}
Add(Button,2755710,553,462)
{
Left=420
Top=10
Width=125
Caption="Поиск модели"
link(onClick,6444111:doAdd,[])
}
Add(Edit,4529729,595,420)
{
Left=555
Top=10
Width=275
Text=""
}
Add(MST_FindText,10090767,714,392)
{
MSTControl="tabl"
}
Add(MT_AddData,4099803,595,364)
{
Count=1
Data=String()
link(onAdd,348769:doEvent1,[(653,370)(653,398)])
link(Data1,5217928:Text,[])
}
Add(MT_AddData,6444111,595,462)
{
Count=1
Data=String()
link(onAdd,348769:doEvent2,[(653,468)(653,405)])
link(Data1,4529729:Text,[])
}
Add(Hub,348769,679,392)
{
InCount=2
OutCount=1
link(onEvent1,10090767:doFindText,[])
}
Add(MT_MultiData,10638613,287,196)
{
Count=5
Point(Data)
Point(RemaindData)
link(onData1,11671383:doText,[(331,202)(331,321)(303,321)(303,440)])
link(onData2,13541262:doText,[(338,209)(338,440)])
link(onData5,4314303:doEvent1,[(373,230)(373,440)])
link(Data,3086052:Select,[(293,191)(237,191)])
}
Add(Edit,11671383,315,434)
{
Left=10
Top=485
Width=110
Enabled=1
Text=""
ReadOnly=0
}
Add(Label,5413725,315,392)
{
Left=10
Top=465
Width=67
Height=17
Caption="Парт. номер"
}
Add(Label,8424378,441,392)
{
Left=10
Top=510
Width=54
Height=17
Caption="Описание"
}
Add(Edit,13541262,357,434)
{
Left=130
Top=485
Width=275
Enabled=1
Text=""
ReadOnly=0
}
Add(Label,1608245,357,392)
{
Left=130
Top=465
Width=43
Height=17
Caption="Модель"
}
Add(Memo,2378169,441,434)
{
Left=10
Top=530
Width=980
Height=110
ScrollBars=2
ReadOnly=0
}
Add(Hub,4314303,399,434)
{
link(onEvent1,2378169:doClear,[(431,440)(431,447)])
link(onEvent2,2378169:doAdd,[(431,447)(431,440)])
}

Редактировалось 2 раз(а), последний 2025-04-26 17:19:43
карма: 1

0
Ответов: 892
Рейтинг: 190
#10: 2025-04-26 19:03:13 ЛС | профиль | цитата
Serascer писал(а):
Пока остановился на этом варианте

Чуть-чуть поправил
Add(MainForm,4060584,462,126)
{
Width=1017
Height=662
Caption="Таблица мониторов"
BorderStyle=1
Point(onClose)
link(onCreate,13411267:doOpen,[])
}
Add(Button,9429861,574,329)
{
Left=10
Top=10
Width=125
Caption="Добавить новый файл"
link(onClick,12479767:doExecute,[])
}
Add(ODialog,12479767,616,329)
{
Filter="Excel|*.xlsx"
link(onExecute,3595730:doWork,[])
}
Add(DS_SQLite,13411267,511,140)
{
Name="fromExcel"
FileName="MyDB.db"
link(onOpen,10856566:doExec,[])
}
Add(MTStrTbl,3086052,133,161)
{
Left=10
Top=40
Width=980
Height=417
Name="tabl"
Columns=#9:Партномер|6:Модель|21:Регулировка по высоте|16:Портретный режим|8:Описание|
ColorItems=0
Redaction=0
Grid=0
link(onClick,10638613:doSeparateMT,[])
}
Add(MST_DB,2969440,833,224)
{
MSTControl="tabl"
}
Add(DSC_Query,15295346,777,224)
{
DSManager="fromExcel"
link(onQuery,2969440:doAddRow,[])
}
Add(DSC_Query,14013266,777,140)
{
SQL="SELECT\r\n"Количество записей в базе - " || COUNT(*)\r\nFROM\r\n [Serascer]\r\n;\r\n"
DSManager="fromExcel"
link(onQuery,7299857:doText,[])
}
Add(Hub,14561010,721,245)
{
InCount=4
OutCount=4
link(onEvent1,14013266:doQuery,[(746,251)(746,146)])
link(onEvent2,3674884:doClear,[(753,258)(753,188)])
link(onEvent3,15295346:doQuery,[(760,265)(760,230)])
link(onEvent4,15121271:doColAction,[])
}
Add(VBJScript,3595730,658,329)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doWork|
EventPoints=#6:onRead|7:onClear|6:onStop|
Script=#10:Dim strOut|22:Sub doWork(Data,Index)|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|19: sys.onClear nil|4: |17: ' Лист1.Select|38: 'objExcel.Sheets("Итоговое").Select|43: objExcel.ActiveSheet.Cells(1, 1).Select |5: |33: intRow = 2 ' начальная строка|4: |51: Do Until objExcel.Cells(intRow,1).Value = "" |121: strOut = "INSERT OR IGNORE INTO [Serascer] VALUES(" & "'" & objExcel.Cells(intRow, 1).Value & "'" & "," & "'" &_ |61: objExcel.Cells(intRow, 3).Value & "'" & "," & "'" &_ |60: objExcel.Cells(intRow, 9).Value & "'" & "," & "'" &_|61: objExcel.Cells(intRow, 12).Value & "'" & "," & "'" &_|48: objExcel.Cells(intRow, 17).Value & "');"|26: sys.onRead strOut |27: intRow = intRow + 1|19: strOut = ""|8: Loop|4: |17: objExcel.Quit|22: sys.onStop nil |0:|7:End Sub|
UseName=0
link(onRead,4246386:doExec,[])
link(onStop,14561010:doEvent4,[(697,349)(697,272)])
}
Add(DSC_Exec,4246386,714,329)
{
DSManager="fromExcel"
}
Add(MST_ColAction,15121271,777,266)
{
Action=9
MinColWidth=140
MaxColWidth=1000
Index=-2
MSTControl="tabl"
}
Add(DSC_Exec,10856566,560,140)
{
SQL="CREATE TABLE IF NOT EXISTS "Serascer"(\r\n [PartNumber] CHAR(12) UNIQUE, \r\n [Model] CHAR(25), \r\n [Height_adjustment] CHAR(3), \r\n [Portrait_mode] CHAR(7), \r\n [Description] CHAR);"
DSManager="fromExcel"
link(onExec,6387976:doWork2,[])
}
Add(MST_Clear,3674884,777,182)
{
MSTControl="tabl"
}
Add(Edit,5217928,511,217)
{
Left=295
Top=10
Width=110
Text=""
link(onChange,4487560:doStrCatDlm,[])
}
Add(Edit,4529729,511,259)
{
Left=555
Top=10
Width=275
Text=""
link(onChange,1796459:doStrCatDlm,[])
}
Add(MT_MultiData,10638613,196,161)
{
Count=5
Point(Data)
Point(RemaindData)
link(onData1,11671383:doText,[(235,167)(235,139)])
link(onData2,13541262:doText,[])
link(onData5,2378169:doText,[(235,195)(235,237)])
link(Data,3086052:Select,[(202,152)(188,152)(188,201)(139,201)])
}
Add(Edit,11671383,245,133)
{
Left=10
Top=485
Width=110
Enabled=1
Text=""
ReadOnly=0
}
Add(Label,5413725,140,63)
{
Left=10
Top=465
Width=67
Height=17
Caption="Парт. номер"
}
Add(Label,8424378,224,63)
{
Left=10
Top=510
Width=54
Height=17
Caption="Описание"
}
Add(Edit,13541262,245,168)
{
Left=130
Top=485
Width=275
Enabled=1
Text=""
ReadOnly=0
}
Add(Label,1608245,182,63)
{
Left=130
Top=465
Width=43
Height=17
Caption="Модель"
}
Add(Memo,2378169,245,210)
{
Left=10
Top=530
Width=980
Height=85
ScrollBars=2
ReadOnly=0
}
Add(FormatStr,13162743,630,217)
{
DataCount=1
Mask="SELECT\r\n [PartNumber], \r\n [Model], \r\n [Height_adjustment], \r\n [Portrait_mode], \r\n [Description]\r\nFROM\r\n [Serascer]\r\nWHERE\r\n [PartNumber] LIKE "%1"\r\n ;"
link(onFString,14561010:doEvent2,[(704,223)(704,258)])
}
Add(StrCatDelim,4487560,560,217)
{
Str1="%"
Str2="%"
Point(Delimiter)
link(onStrCatDlm,13162743:doString,[])
}
Add(FormatStr,525904,630,259)
{
DataCount=1
Mask="SELECT\r\n [PartNumber], \r\n [Model], \r\n [Height_adjustment], \r\n [Portrait_mode], \r\n [Description]\r\nFROM\r\n [Serascer]\r\nWHERE\r\n [Model] LIKE "%1"\r\n ;"
link(onFString,14561010:doEvent3,[])
}
Add(StrCatDelim,1796459,560,259)
{
Str1="%"
Str2="%"
Point(Delimiter)
link(onStrCatDlm,525904:doString,[])
}
Add(Button,3471573,385,203)
{
Left=850
Top=10
Width=125
Caption="Сброс поиска"
Data=String()
link(onClick,7257888:doEvent1,[])
}
Add(Label,14775644,294,21)
{
Left=160
Top=10
Width=125
Height=20
Caption="Поиск парт. номера"
}
Add(Label,3612996,294,63)
{
Left=420
Top=10
Width=125
Height=20
Caption="Поиск модели"
}
Add(Hub,7257888,448,203)
{
OutCount=3
link(onEvent1,6387976:doWork3,[(613,209)])
link(onEvent2,5217928:doText2,[(501,216)(501,230)])
link(onEvent3,4529729:doText2,[(480,223)(480,272)])
}
Add(StatusBar,7299857,840,140)
{
}
Add(FormatStr,7091304,630,140)
{
Mask="SELECT\r\n [PartNumber], \r\n [Model], \r\n [Height_adjustment], \r\n [Portrait_mode], \r\n [Description]\r\nFROM\r\n [Serascer]\r\n;\r\n"
link(onFString,14561010:doEvent1,[(711,146)(711,251)])
}
Add(HubEx,6387976,609,140)
{
link(onEvent,7091304:doString,[])
}


Редактировалось 2 раз(а), последний 2025-04-26 19:17:02
карма: 18

0
Ответов: 8948
Рейтинг: 824
#11: 2025-04-26 23:33:27 ЛС | профиль | цитата
Serascer писал(а):
а что за макрос
Вот здесь:
https://disk.yandex.ru/d/1iBpxglPDvnrnQ
Сначала ввести ваш странный параметр "партномер" и нажать кнопку "Проверить", если нет совпадений, то заполнить остальные столбцы и нажать кнопку "Записать".
Gunta, жаль уже нет с нами коллеги Tad-a, он спец по БД.
карма: 19

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