Вверх ↑
Этот топик читают: Гость
Ответов: 257
Рейтинг: -2
#1201: 2013-11-12 20:22:40 ЛС | профиль | цитата
Я синтаксис знаю. Проблема в том что строка либо вставляется либо изменяется если уже есть такая строка где значение двух колонок равно = %1 %2

а вставляется строки через запрос, формирцемый форматстр. А именно загружается таблица в MTSTrТЫ а дальше пользователь выбирает порядок столбцов для записи, то есть запрос может быть как insert блабла values (%3%2%1) так и (%5%3%10), дальше это все вставляется вот примерно так

наименование номер кол цена
1 null 5 null

далее пользователь может отреактировать ячейки где ничего не записано, а при обновлении нужно обновить только ячейки заданные маской, по которой строка добавлялась,т.е колонки (%1%3%4) значения (%5%7%1) - это как пример, при том что столбцов в БД 11 штук. Каким образом сделать запрос чтоб он либо вставлял строку если не находит ее с заданым значением имени в поле наименование, либо обновлял по той же маске, типа колонки (%2%3%4) обновить значения (%5%6%7) - все что в скобках, подставляется форматстр, и не меняется как при вставке строки так и при обновлении.

схема
Add(Message,14186059,294,1106)
{
Message=" ok"
}
Add(EditMulti,10615517,1,14)
{
WorkCount=1
Width=1301
Height=1173
link(doWork1,10417325:doShowModal,[(39,20)(39,76)])
}
Add(MainForm,10417325,56,42)
{
Left=35
Top=105
Width=1016
Height=585
Visible=1
Position=1
Point(doShowModal)
}
Add(FormatStr,5564056,453,97)
{
Mask="Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};\r\nDriverId=790;\r\nDBQ=%1;\r\nDefaultDir=%2;\r\n\r\n"
Point(FString)
link(onFString,12643853:doOpen,[])
link(Str1,10944599:Value,[(459,89)(433,89)])
link(Str2,10330270:Value,[(466,81)(474,81)])
}
Add(FilePart,11678961,370,34)
{
link(onPath,10330270:doValue,[])
link(onName,7847882:doValue,[])
}
Add(DSC_Query,13233332,594,223)
{
DSManager="skladdb"
link(onQuery,15481789:doStr,[(638,229)(638,306)])
link(onColumns,4842314:doAddCols,[])
}
Add(FormatStr,14965509,547,223)
{
Mask="SELECT * FROM `%1`.`%2$`"
Point(FString)
link(onFString,13233332:doQuery,[])
link(Str1,6358669:Var1,[(553,120)])
link(Str2,5372757:Var1,[(560,138)])
}
Add(MTStrTbl,7000450,119,287)
{
Left=5
Top=25
Width=991
Height=248
Name="import"
FlatScroll=1
ColumnClick=1
ColorItems=0
link(onColumnClick,4386512:doEvent1,[])
}
Add(Hub,6740241,343,62)
{
OutCount=4
link(onEvent1,11678961:doPart,[(363,68)(363,40)])
link(onEvent2,10944599:doValue,[(417,75)(417,55)])
link(onEvent3,5564056:doString,[(418,82)(418,103)])
link(onEvent4,115901:doWork1,[(396,89)(396,159)])
}
Add(ToolBar,14708677,173,62)
{
Width=1000
Height=25
Align=2
Caption=0
Buttons=['=Открыть файл импорта'=[ZIP3604000078DA8D922D0F83301086BB64627212B9B9ED0F90CC2297CC4C6227919358241259CB4F40D62291486C2512D9DD958FDCE0283479D21E77EF4BAF6DF0F28FC20E1FB801E78183B8F489214F8731C6E2C57217633DC5CBCAFDCC3C3C595A24ACA37A9BBB54E2F4CD17FA5877D623D60E1A2382A259E8AF79251EAAB6FAA475001E816A17FAA0D0D6238738EBDCBC9516A1AA260FD4635F38A75DDF838BB0041F98A93E19F4916AA67D75CC3D21D88399EBA1B767A9A7B3DC03D54BE82B6560DF8AFC7F03181BA64F7AB76B63F4C0B3E7FE436321242A7A3E7D4CF3E841E1F63E7930FA659D64BE0FB90D3DADE5E235FFB57D70F563FC03A73D1FF4],'-'=[],'=Remove node'=[ZIP3604000078DA73F235636100033320D600620128666450804840E591C1FFFFFF070D26C53DE86A29F51329E1824B9E18FDC4988DCB0C62FD87CD0C52C3061BA0244C298D0F72DD4E8AFF09D987CF0C62DD4AC86C62FD49ADBC0B00D9365139],'-'=[],'=Сохранить в базу'=[ZIP3604000078DACD90AD0EC32010806FC91E608F30395BD3A4B6B2C94C5FA18F50393B5959C92B2091582472128B9D434CB03B5A9A8A9690345946F209B8FBEE87FA5E9E219C12B9219799135CA7C01C5F1FEFFD5FF0A82A604D03ACAE4108B1092B8A09CA43A22B9F3DE8AE0BD03B670C54DF8341E7FDF1E09C036BEDE2C7BC3D5F53BFB605390C608C596AE4FA5629E0B807C71968EE5823D7375A831EC73007E73CD478E15B8E9FCB9E4F3BA748F914A73D53C41A295FE1FF6D91EB1FED2FA5FC797FBA536C6FF708E5ACDDA37C017AD94051],''=[]]
link(onClick,15451097:doEvent,[])
}
Add(IndexToChanel,15451097,224,62)
{
link(onEvent1,3010412:doExecute,[])
}
Add(Memory,10330270,468,34)
{
Default=String()
}
Add(ODialog,3010412,279,62)
{
Filter="Exel files| *.*"
Title="Выберите файл импорта"
link(onExecute,6740241:doEvent1,[])
}
Add(ChildForm,115901,435,153)
{
link(onEvent1,1005537:doValue,[(544,159)(544,104)])
link(onEvent2,12541766:doEvent1,[(479,166)(479,181)])
}
BEGIN_SDK
Add(EditMulti,3282512,21,21)
{
EventCount=2
WorkCount=1
Width=524
Height=207
link(doWork1,16088527:doVisible,[(53,27)(53,76)])
}
Add(MainForm,16088527,84,42)
{
Left=35
Top=105
Width=216
Height=131
Visible=1
Caption=""
BorderStyle=3
Position=1
Point(doVisible)
}
Add(Label,13057701,483,77)
{
Left=5
Top=15
Width=101
Height=17
Caption="Введите имя листа"
}
Add(Edit,6956163,420,77)
{
Left=5
Top=40
Width=200
Text=""
link(onChange,3282512nEvent1,[(460,83)(460,27)])
}
Add(Button,5867391,161,140)
{
Left=130
Top=70
Width=75
Height=25
Caption="импорт"
link(onClick,7825575:doEvent1,[])
}
Add(Hub,7825575,224,140)
{
link(onEvent1,16088527:doClose,[(250,146)(250,108)(72,108)(72,69)])
link(onEvent2,3282512nEvent2,[(392,153)(392,34)])
}
END_SDK
Add(Memory,1005537,630,98)
{
}
Add(Memory,7847882,602,41)
{
}
Add(Memory,10944599,427,49)
{
}
Add(Hub,12541766,491,175)
{
OutCount=3
link(onEvent1,4077964:doString,[])
link(onEvent2,14965509:doString,[(526,188)(526,229)])
link(onEvent3,8800958:doColAction,[(516,195)(516,272)])
}
Add(MST_DB,4842314,894,223)
{
MSTControl="import"
link(onChange,4327907:doNext,[])
}
Add(MST_ColAction,8800958,546,266)
{
Action=9
MinColWidth=30
MSTControl="import"
}
Add(DS_ODBC,12643853,504,97)
{
Name="skladdb"
}
Add(DSC_Query,7210940,858,175)
{
DSManager="skladdb"
link(onQuery,2528785:doStr,[])
}
Add(FormatStr,4077964,581,175)
{
Mask="SELECT count(*) FROM `%1`.`%2$`"
Point(FString)
link(onFString,7210940:doQuery,[])
link(Str1,6358669:Var2,[])
link(Str2,5372757:Var2,[])
}
Add(GetDataEx,6358669,581,115)
{
Angle=1
link(Data,7847882:Value,[(608,120)])
}
Add(GetDataEx,5372757,588,133)
{
Angle=1
link(Data,1005537:Value,[(636,138)])
}
Add(MT_String,2528785,910,175)
{
link(onResult,3366055:doMax,[(972,181)(972,209)])
}
Add(Application,4911996,1029,230)
{
Wait=1
}
Add(CounterEx,4327907,940,223)
{
Max=100000
link(onNext,10288875:doEvent1,[])
}
Add(Hub,10288875,993,223)
{
link(onEvent1,3366055:doPosition,[(1057,229)(1057,202)])
link(onEvent2,4911996:doProcessMessages,[])
}
Add(ProgressBarRush,3366055,1071,196)
{
Left=5
Top=280
Width=990
ColorFrom=32768
ColorTo=65280
Caption=" строк импортировано"
Point(doMax)
}
Add(Label,8359924,35,294)
{
Left=5
Top=310
Width=200
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="Настройки колонок для импорта"
}
Add(Label,8949629,49,357)
{
Left=10
Top=340
Width=80
Height=17
Caption="Наименование"
}
Add(Label,12001735,49,364)
{
Left=104
Top=340
Width=38
Height=17
Caption="Номер"
}
Add(Label,309004,49,371)
{
Left=190
Top=340
Width=26
Height=17
Caption="Кол."
}
Add(Label,15831690,49,378)
{
Left=280
Top=340
Width=54
Height=17
Caption="Цена зак."
}
Add(Label,1384883,49,385)
{
Left=370
Top=340
Width=54
Height=17
Caption="Цена роз."
}
Add(Label,15211012,49,392)
{
Left=460
Top=340
Width=44
Height=17
Caption="Кол зал"
}
Add(Label,12640813,49,399)
{
Left=550
Top=340
Width=56
Height=17
Caption="Кол склад"
}
Add(Label,4375518,49,406)
{
Left=640
Top=340
Width=42
Height=17
Caption="Стелаж"
}
Add(Label,10459338,49,413)
{
Left=730
Top=340
Width=36
Height=17
Caption="Полка"
}
Add(Label,1879975,49,420)
{
Left=820
Top=340
Width=36
Height=17
Caption="Место"
}
Add(Label,15325517,49,427)
{
Left=910
Top=340
Width=62
Height=17
Caption="Поставщик"
}
Add(FormatStr,15253371,476,728)
{
Mask="Insert or replace into sklad (id,%2) Values (#1%1');"
link(onFString,10513546:doReplace,[])
link(Str1,9603353:Result,[(482,678)(545,678)])
link(Str2,1972557:Result,[(489,696)(1147,696)])
}
Add(MST_ArrayCols,4801550,217,245)
{
MSTControl="import"
}
Add(ArrayRW,101518,217,294)
{
link(onRead,13691394:doSplit,[])
link(Array,4801550:ColumnArray,[])
}
Add(StrPart,13691394,259,294)
{
Char="="
link(onPart,7700965:doValue,[])
}
Add(Hub,4386512,168,294)
{
OutCount=4
link(onEvent1,101518:doRead,[])
link(onEvent2,5832197:doEvent,[(251,307)(251,405)])
link(onEvent3,7110811:doOperation,[(228,314)(228,514)])
link(onEvent4,14636893:doEvent,[(214,321)(214,601)])
}
Add(IndexToChanel,5832197,313,399)
{
Count=11
Point(Data)
Point(Index)
link(onEvent1,3022747:doText2,[(383,405)(383,349)])
link(onEvent2,11470367:doText2,[(391,412)(391,370)])
link(onEvent3,4428857:doText2,[(419,419)(419,390)])
link(onEvent4,2668976:doText2,[(433,426)(433,412)])
link(onEvent5,3153861:doText2,[])
link(onEvent6,4621313:doText2,[(490,440)(490,454)])
link(onEvent7,9356882:doText2,[(485,447)(485,475)])
link(onEvent8,1581978:doText2,[(482,454)(482,496)])
link(onEvent9,2629254:doText2,[(476,461)(476,517)])
link(onEvent10,6414262:doText2,[(535,468)(535,538)])
link(onEvent11,6830730:doText2,[(462,475)(462,559)])
link(Data,7700965:Value,[])
link(Index,16560170:Value,[(326,394)(335,394)])
}
Add(Memory,7700965,313,301)
{
}
Add(Edit,3022747,420,336)
{
Left=10
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork1,[])
}
Add(Edit,11470367,452,357)
{
Left=100
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork2,[(648,377)(648,363)])
}
Add(Edit,4428857,486,377)
{
Left=190
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork3,[(665,397)(665,370)])
}
Add(Edit,2668976,521,399)
{
Left=280
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork4,[(683,419)(683,377)])
}
Add(Edit,3153861,553,420)
{
Left=370
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork5,[(699,440)(699,384)])
}
Add(Edit,4621313,591,441)
{
Left=460
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork6,[(717,461)(717,391)])
}
Add(Edit,9356882,625,462)
{
Left=550
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork7,[(735,482)(735,398)])
}
Add(Edit,1581978,659,483)
{
Left=640
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork8,[(751,503)(751,405)])
}
Add(Edit,2629254,692,504)
{
Left=730
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork9,[(768,524)(768,412)])
}
Add(Edit,6414262,725,525)
{
Left=820
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork10,[(785,545)(785,419)])
}
Add(Edit,6830730,760,546)
{
Left=910
Top=360
Width=80
Text=""
Point(onMouseDown)
link(onMouseDown,15300901:doWork11,[(802,566)(802,426)])
}
Add(ChanelToIndex,15300901,812,350)
{
Count=11
link(onIndex,2283028:doEvent1,[])
}
Add(Memory,16560170,329,357)
{
}
Add(IndexToChanel,14636893,313,595)
{
Count=11
Point(Data)
Point(Index)
link(onEvent1,4667558:doWork2,[])
link(onEvent2,4667558:doWork3,[(361,608)])
link(onEvent3,11303025:doWork3,[(368,615)])
link(onEvent4,7144621:doWork3,[(382,622)])
link(onEvent5,414765:doWork3,[(396,629)])
link(onEvent6,4787536:doWork3,[(410,636)])
link(onEvent7,9180467:doWork3,[(424,643)])
link(onEvent8,597924:doWork3,[(438,650)])
link(onEvent9,9294574:doWork3,[(452,657)])
link(onEvent10,11345602:doWork3,[(459,664)])
link(onEvent11,15737565:doWork3,[(466,671)])
link(Data,6579360:Value,[])
link(Index,5957453:Value,[(326,587)(363,587)])
}
Add(StrCat,4952076,273,508)
{
Str1="#"
link(onStrCat,6579360:doValue,[])
}
Add(Memory,5957453,357,546)
{
}
Add(Hub,7745605,161,357)
{
link(onEvent1,16560170:doValue,[])
link(onEvent2,5957453:doValue,[(221,370)(221,552)])
}
Add(Memory,6579360,313,508)
{
}
Add(Button,4090049,56,728)
{
Left=100
Top=450
link(onClick,1586415:doEvent1,[])
}
Add(Math,7110811,232,508)
{
Op2=2
link(onResult,4952076:doStrCat,[])
}
Add(MT_MultiData,14263026,355,897)
{
Count=12
Point(Data)
link(onData1,11130264:doWork2,[])
link(onData2,10082545:doTrim,[])
link(onData3,14368654:doText2,[])
link(onData4,9256080:doText2,[(471,924)(471,923)])
link(onData5,13787453:doText2,[])
link(onData6,14985937:doText2,[])
link(onData7,14534076:doText2,[])
link(onData8,1946472:doText2,[])
link(onData9,1026855:doText2,[])
link(onData10,6599380:doText2,[])
link(onData11,15965689:doText2,[])
link(onData12,13639048:doText2,[])
}
Add(Edit,6058552,477,897)
{
Left=5
Top=410
Width=80
Text=""
}
Add(Edit,14368654,515,904)
{
Left=95
Top=410
Width=80
Text=""
}
Add(Edit,9256080,556,910)
{
Left=185
Top=410
Width=80
Text=""
}
Add(Edit,13787453,598,918)
{
Left=275
Top=410
Width=80
Text=""
}
Add(Edit,14985937,637,925)
{
Left=365
Top=410
Width=80
Text=""
}
Add(Edit,14534076,675,932)
{
Left=455
Top=410
Width=80
Text=""
}
Add(Edit,1946472,716,939)
{
Left=545
Top=410
Width=80
Text=""
}
Add(Edit,1026855,757,946)
{
Left=635
Top=410
Width=80
Text=""
}
Add(Edit,6599380,797,953)
{
Left=725
Top=410
Width=80
Text=""
}
Add(Edit,15965689,837,960)
{
Left=815
Top=410
Width=80
Text=""
}
Add(Edit,13639048,879,967)
{
Left=905
Top=410
Width=80
Text=""
}
Add(MT_AddData,12146821,203,897)
{
Count=1
InputMT=1
link(onAdd,5393632:doEvent1,[])
link(Data1,5294541:Value,[])
}
Add(Memory,5294541,203,847)
{
Default=String(NULL)
}
Add(Memory,10298765,448,861)
{
Default=String(NULL)
}
Add(FormatStr,11401967,535,1078)
{
DataCount=12
Mask=""
Point(doMask)
link(onFString,4071598:doCharset,[])
link(Str1,10298765:Value,[(541,1062)(454,1062)])
link(Str2,9058826:Var2,[(548,1055)(483,1055)])
link(Str3,600576:Var2,[(555,1047)(521,1047)])
link(Str4,9256080:Text,[])
link(Str5,13787453:Text,[(569,1014)(604,1014)])
link(Str6,14985937:Text,[(576,1018)(643,1018)])
link(Str7,14534076:Text,[(583,1021)(681,1021)])
link(Str8,1946472:Text,[(590,1024)(722,1024)])
link(Str9,1026855:Text,[(597,1028)(763,1028)])
link(Str10,6599380:Text,[(604,1032)(803,1032)])
link(Str11,15965689:Text,[(611,1035)(843,1035)])
link(Str12,13639048:Text,[(618,1038)(885,1038)])
}
Add(Replace,10513546,602,728)
{
SubStr="#"
DestStr="%"
link(onReplace,5443243:In,[])
}
Add(LineBreak,8720588,462,1085)
{
Caption="mask"
link(Out,11401967:doMask,[])
Primary=[5443243,245,-357]
}
Add(MST_ArrayRows,14946559,154,847)
{
MSTControl="import"
}
Add(Hub,1586415,119,728)
{
link(onEvent1,15253371:doString,[])
link(onEvent2,4666483:doEnum,[(143,741)(143,903)])
}
Add(MT_MTArrayEnum,4666483,154,897)
{
link(onItem,6441625:doWork2,[])
link(onEndEnum,14186059:doMessage,[(240,910)(240,1112)])
link(Array,2985369:Var2,[])
}
Add(MT_String,15481789,649,300)
{
link(onResult,12646965:doReplace,[])
}
Add(Replace,12646965,694,300)
{
SubStr="NULL"
link(onReplace,10523440:doReplace,[])
}
Add(MT_String,200651,846,286)
{
link(onResult,4842314:doAddRow,[(886,292)(886,229)])
}
Add(Replace,10523440,744,300)
{
SubStr=",00"
link(onReplace,9564008:doReplace,[])
}
Add(Replace,9564008,793,300)
{
SubStr=".0"
link(onReplace,200651:doMTString,[])
}
Add(Hub,5393632,250,897)
{
OutCount=5
link(onEvent1,10298765:doClear,[(329,903)(329,874)])
link(onEvent2,14263026:doSeparateMT,[(334,910)(334,903)])
link(onEvent3,2337862:doString,[(276,917)(276,981)(55,981)(55,1056)])
link(onEvent4,11401967:doString,[(329,924)(329,1084)])
}
Add(Hub,2283028,861,350)
{
link(onEvent1,1684315:In,[])
link(onEvent2,4114744:doEvent,[(881,363)(881,482)])
}
Add(LineBreak,14680591,105,357)
{
Caption="index"
link(Out,7745605:doEvent1,[])
Primary=[1684315,784,-7]
}
Add(IndexToChanel,4114744,894,476)
{
Count=11
Point(Data)
Point(Index)
link(onEvent1,14108769:doData,[])
link(onEvent2,1177364:doData,[])
link(onEvent3,14053119:doData,[])
link(onEvent4,2680498:doData,[])
link(onEvent5,12495549:doData,[])
link(onEvent6,14651363:doData,[])
link(onEvent7,10280434:doData,[])
link(onEvent8,4290028:doData,[])
link(onEvent9,7445112:doData,[])
link(onEvent10,6834373:doData,[])
link(onEvent11,8220987:doData,[])
}
Add(DoData,8220987,1036,546)
{
Data=String(,Postav)
link(onEventData,14430866:doWork3,[])
}
Add(DoData,6834373,1022,539)
{
Data=String(,Mesto)
link(onEventData,7203771:doWork3,[(1061,545)])
}
Add(DoData,7445112,1008,532)
{
Data=String(,Polka)
link(onEventData,13582779:doWork3,[])
}
Add(DoData,4290028,994,525)
{
Data=String(,Stel)
link(onEventData,11911803:doWork3,[(1033,531)])
}
Add(DoData,10280434,987,518)
{
Data=String(,Kolsklad)
link(onEventData,9851039:doWork3,[(1026,524)])
}
Add(DoData,14651363,980,511)
{
Data=String(,Kolzal)
link(onEventData,8497031:doWork3,[(1019,517)])
}
Add(DoData,12495549,973,504)
{
Data=String(,Cenaroz)
link(onEventData,8891629:doWork3,[(1012,510)])
}
Add(DoData,2680498,966,497)
{
Data=String(,Cenazak)
link(onEventData,10650114:doWork3,[(1005,503)])
}
Add(DoData,14053119,959,490)
{
Data=String(,Kol)
link(onEventData,12620100:doWork3,[(998,496)])
}
Add(DoData,1177364,945,483)
{
Data=String(,Nomer)
link(onEventData,71794:doWork3,[(991,489)])
}
Add(DoData,14108769,938,476)
{
Data=String(,Name)
link(onEventData,71794:doWork2,[])
}
Add(StrCat,15842137,1092,476)
{
link(onStrCat,1972557:doTrim,[])
link(Str1,15842137:Result,[(1098,464)(1086,464)(1086,520)(1098,520)])
}
Add(HubEx,71794,987,476)
{
link(onEvent,12620100:doWork2,[])
}
Add(HubEx,12620100,994,476)
{
link(onEvent,10650114:doWork2,[])
}
Add(HubEx,10650114,1001,476)
{
link(onEvent,8891629:doWork2,[])
}
Add(HubEx,8891629,1008,476)
{
link(onEvent,8497031:doWork2,[])
}
Add(HubEx,8497031,1015,476)
{
link(onEvent,9851039:doWork2,[])
}
Add(HubEx,9851039,1022,476)
{
link(onEvent,11911803:doWork2,[])
}
Add(HubEx,11911803,1029,476)
{
link(onEvent,13582779:doWork2,[])
}
Add(HubEx,13582779,1036,476)
{
link(onEvent,7203771:doWork2,[])
}
Add(HubEx,7203771,1057,476)
{
link(onEvent,14430866:doWork2,[])
}
Add(HubEx,14430866,1064,476)
{
link(onEvent,15842137:doStrCat,[])
}
Add(Trim,1972557,1141,476)
{
Char=","
Point(Result)
}
Add(HubEx,4667558,357,595)
{
link(onEvent,11303025:doWork2,[])
}
Add(HubEx,11303025,364,595)
{
link(onEvent,7144621:doWork2,[])
}
Add(HubEx,7144621,378,595)
{
link(onEvent,414765:doWork2,[])
}
Add(HubEx,414765,392,595)
{
link(onEvent,4787536:doWork2,[])
}
Add(HubEx,4787536,406,595)
{
link(onEvent,9180467:doWork2,[])
}
Add(HubEx,9180467,420,595)
{
link(onEvent,597924:doWork2,[])
}
Add(HubEx,597924,434,595)
{
link(onEvent,9294574:doWork2,[])
}
Add(HubEx,9294574,448,595)
{
link(onEvent,11345602:doWork2,[])
}
Add(HubEx,11345602,455,595)
{
link(onEvent,15737565:doWork2,[])
}
Add(HubEx,15737565,462,595)
{
link(onEvent,11471477:doStrCatDlm,[])
}
Add(StrCatDelim,11471477,490,595)
{
Delimiter="','"
link(onStrCatDlm,9603353:doTrim,[])
link(Str1,11471477:Result,[(496,583)(484,583)(484,639)(496,639)])
}
Add(Trim,9603353,539,595)
{
Char="'"
Point(Result)
}
Add(DSC_Exec,319736,707,1078)
{
DSManager="parent.parent.base1"
link(onError,4380766:doMessage,[])
}
Add(Message,4380766,763,1085)
{
}
Add(Charset,4071598,653,1078)
{
Type=6
link(onCharset,319736:doExec,[])
}
Add(DSC_Query,5871792,203,1050)
{
DSManager="parent.parent.base1"
link(onQuery,11130264:doWork3,[(417,1056)])
}
Add(FormatStr,2337862,63,1050)
{
Mask="SELECT id FROM "main"."sklad" WHERE Name Like '#%1#' and Nomer Like '#%2#';"
link(onFString,7416183:doReplace,[])
link(Str1,9058826:Var1,[(69,985)])
link(Str2,600576:Var1,[(76,992)])
}
Add(GetDataEx,9058826,477,980)
{
link(Data,6058552:Text,[])
}
Add(GetDataEx,600576,515,987)
{
link(Data,14368654:Text,[])
}
Add(ArrayRW,5849476,126,945)
{
Index=Integer(5)
link(onRead,6441625:doWork3,[(193,951)])
link(Array,2985369:Var1,[(132,887)])
}
Add(GetDataEx,2985369,154,882)
{
link(Data,14946559:Strings,[])
}
Add(HubEx,6441625,189,897)
{
link(onEvent,12146821:doAdd,[])
}
Add(Charset,14438489,156,1050)
{
Type=6
link(onCharset,5871792:doQuery,[])
}
Add(Replace,7416183,112,1050)
{
SubStr="#"
DestStr="%"
link(onReplace,14438489:doCharset,[])
}
Add(Trim,10082545,434,904)
{
Char=" "
link(onTrim,6058552:doText2,[])
}
Add(HubEx,11130264,413,897)
{
Angle=3
link(onEvent,10298765:doValue,[(417,867)])
}
карма: 0

0
Ответов: 704
Рейтинг: 44
#1202: 2013-11-12 21:54:24 ЛС | профиль | цитата
Да жесть схема , жди буду смотреть.
------------ Дoбавленo в 21.54:
Если я тебя правильно понял, то можно будет доработать, это только пример, в твоей схеме так и не понял что нужно.
В этой схеме выбираешь строку и редактируешь.



Add(MainForm,2953706,273,126)
{
Width=573
Height=572
link(onCreate,6798125:doEnum,[])
}
Add(FormatStr,7559632,455,322)
{
DataCount=10
Mask="UPDATE Test SET %1=%2 , %3=%4, %5=%6 , %7=%8, %9=%10 WHERE name="Вася";"
link(onFString,9805477:doAdd,[])
link(Str1,13601150:Part1,[(461,292)(580,292)])
link(Str2,7886991:Part1,[(468,300)(461,300)])
link(Str3,13601150:Part2,[(475,292)(587,292)])
link(Str4,7886991:Part2,[(482,300)(468,300)])
link(Str5,13601150:Part3,[(489,292)(594,292)])
link(Str6,7886991:Part3,[(496,300)(475,300)])
link(Str7,13601150:Part4,[(503,292)(601,292)])
link(Str8,7886991:Part4,[(510,300)(482,300)])
link(Str9,13601150:Part5,[(517,292)(608,292)])
link(Str10,7886991:Part5,[(524,300)(489,300)])
}
Add(StrList,3801703,357,70)
{
Strings=#9:1;2;3;4;5|10:6;7;8;9;10|14:11;12;13;14;15|14:16;17;18;19;20|14:21;22;23;24;25|
}
Add(ArrayEnum,6798125,371,140)
{
link(onItem,9026701:doAdd,[])
link(Array,3801703:Array,[])
}
Add(StringTable,9026701,448,140)
{
Left=5
Top=10
Width=555
Height=240
Columns=#8:1Колонка|8:2Колонка|8:3Колонка|8:4Колонка|8:5Колонка|
Point(Strings)
Point(Matrix)
}
Add(Memo,9805477,567,322)
{
Left=5
Top=275
Width=550
Height=255
}
Add(Label,6878622,273,91)
{
Left=5
Top=255
Width=160
Height=17
Caption="Результат строки для запроса"
}
Add(Button,14161011,343,231)
{
Left=165
Top=255
Width=135
Caption="Получить"
link(onClick,2281184:doEvent1,[])
}
Add(MultiStrPart,7886991,455,245)
{
Count=5
link(Str,9026701:Select,[])
}
Add(Hub,2281184,399,231)
{
OutCount=4
link(onEvent1,13601150:doSplit,[])
link(onEvent2,9805477:doClear,[(542,244)(542,335)])
link(onEvent3,7886991:doSplit,[])
link(onEvent4,7559632:doString,[(434,258)(434,328)])
}
Add(StrList,6548876,574,168)
{
Strings=#44:1Колонка;2Колонка;3Колонка;4Колонка;5Колонка|
}
Add(MultiStrPart,13601150,574,231)
{
Count=5
link(Str,6548876:Text,[])
}

карма: 0

0
Ответов: 257
Рейтинг: -2
#1203: 2013-11-12 23:30:21 ЛС | профиль | цитата
Ща попробую объяснить. Загружаем таблицу из EXEL в MTstrТЫ. Далее у меня в БД есть колонки, условно 1 2 3 4 5 6 7 8 9, в загруженной таблице есть колонки условно наименование номер количество цена и т.д. Пользователь выбирает нажимая на название колонки в бд и название столбца в загруженой таблице что и куда писать в результате получается что-то типа наименование пишем в колонку 2 колличество в колонку 5 а цену в колонку 9, используя формат стр получается запрос типа insert into table (2,5,9) values (тут подставляется значение из колонки наименование, колличество,цена). В элементе этот запрос выглядит типа insert into table (%1-тут подставляется выбраные колонки - 2,5,9) values (%3,%4,%5) - тут подставляются значения из выбраных колонок(полей) после вывода строки из таблицы. В итоге это все нормально добавляется, но! когда потом пользователь заполняет в ручную пустые колонки строк в БД, бывает нужно обновить значения загруженные изначально с экселевской таблицы используя маску которая была задана в изначальном вопросе на добавление строк (таблица то та же), но replase заменяет все колонки которые не выбраны значениями по умолчанию,т.е. NULL, а там уже записанные данные, которые затирать нельзя. Собственно вопрос, посмотрев на схему, в которой теперь должно быть все понятно, как обновлять строки в таблице, при том чтоб переделать маску изначального запроса в синтаксис update, я даже не знаю как нужно извратиться, так как названия колонок и % подставляемых значений из форматстринга каждый раз разные
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1204: 2013-11-13 00:12:49 ЛС | профиль | цитата
Kazbek17,
1. давал я ему схему, как определять порядок колонок.
Из дальнейших вопросов понял - человек не смотрел.
Не читатель он.
Писатель.
За месяц - создал аж 49 тем !

2. отправил к SQLite_Demo - там есть всё и INSERT, и UPDATE, и DELETE, и EDIT и всё, что нужно для работы с БД.
Судя по твоему посту выше, ты тоже не смотрел внимательно SQLite_Demo.
Там все очень просто - двойной клик на ячейке и редактируй данные ячейки.
Ушел со строки - данные переписались в БД. Это обычний прием при работе с БД.
И всё.
Не надо изобретать велосипед.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Гость
Ответов: 17029
Рейтинг: 0
#1205: 2013-11-13 00:59:59 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 12:29:15
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1206: 2013-11-13 09:56:12 ЛС | профиль | цитата
Kazbek17, [flood]Если посмотреть на вопросы mudfactory, то можно понять, что человек одновремённо решает несколько задач.
Хотя, давно известно, что
За двумя зайцами погонишься - ни одного не поймаешь.

Задача первая:
С разных мест, несколько раз в месяц поступают EXCEL-таблицы.
Данные идентичны, но.... формат таблиц разный.
В то, что таблицы с одного и того же предприятия каждый раз поступают в другом формате я не верю.
Согнать все таблицы в одну книгу и создать макрос для сводного листа - лень (или не хватает знаний).
Хотя, по активности на форуме, ленью даже и не пахнет.
Видимо сработала реклама на главной -
HiAsm или Конструктор программ это прежде всего система визуального проектирования и разработки приложений, не требующая от пользователя знания языков программирования и особенностей функционирования ОС, позволяющая быстро и легко писать(рисовать) небольшие программы.
А оказывается и знания нужны, и не так уж быстро, и не совсем легко.

Задача вторая:
Принять что-то в ремонт, посчитать стоимость и заполнить шаблон Наряд-заказа.

Задача третья:
Оборот запчастей.
[/flood]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 257
Рейтинг: -2
#1207: 2013-11-13 23:14:45 ЛС | профиль | цитата
Tad не только программист, но и обладает экстрасенсорными способностями, не дающими ему понять что редиктировать 22000 строк, нажимая на ячейку в таблице не возможно, а так же многие другие нюансы которые я неоднократно описывал, и которых даже близко нет в примере SQlite_demo) Ну это ладно, я в принципе и так разбираюсь что к чему, так как кроме insert delete и create, задавать какие-либо вопросы по синтаксису бесполезно, раз ответом на любой вопрос будет отсыл на официальный орговский сайт, который судя по всему некоторые сами не читали, раз не знают что например replace в случае если выбраны конкретные ячейки для записи, перезаписывает все остальные данными по умолчанию
карма: 0

0
Ответов: 4628
Рейтинг: 749
#1208: 2013-11-14 12:14:10 ЛС | профиль | цитата
mudfactory писал(а):
который судя по всему некоторые сами не читали
И этих "некоторых" видно
mudfactory писал(а):
перезаписывает все остальные данными по умолчанию
так как если бы читали, то знали бы, что replace сначала удаляет существующую запись, затем вставляет новую согласно запросу, в котором "все остальные ячейки" не указаны и соответственно будут заполнены "данными по умолчанию"
карма: 26

0
Гость
Ответов: 17029
Рейтинг: 0
#1209: 2013-11-22 22:33:05 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 12:29:15
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1210: 2013-11-23 00:00:19 ЛС | профиль | цитата

SELECT   *  FROM   "main"."table"   Limit   16  Offset (SELECT count()-16 FROM "main"."table");
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 44
#1211: 2013-12-01 23:18:50 ЛС | профиль | цитата
Здравствуйте все. Tad выручайте, не могу понять как лучше сделать данную таблицу, т.е не могу правильно сопоставить схему таблицы.
Вот скринВот код на создание таблиц.
code_32480.txt

Теперь вопрос, если пользователь будет вводить данные в таблицу Table_Infor в колонку>>NameStreets выбрав из таблицы Streets>>, из столбца>> id_NameStreets значение 1,2,3,4 и загнав все это дело в одну строку, то при запросе вот таком.
code_32481.txt Я нечего не получаю, это я понял, потому что в ячейках PRIMARY KEY тип int.
Каким тогда образом нужно разбить и получить int

карма: 0

0
файлы: 2code_32480.txt [455B] [232], code_32481.txt [104B] [205]
Ответов: 16884
Рейтинг: 1239
#1212: 2013-12-02 02:24:36 ЛС | профиль | цитата
Kazbek17 писал(а):
Каким тогда образом

1. Создать таблицы нормально, как просят авторы SQLite.

CREATE TABLE IF NOT EXISTS     User(Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Adress TEXT );
CREATE TABLE IF NOT EXISTS Streets(id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT );
CREATE TABLE IF NOT EXISTS District(Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT );
CREATE TABLE IF NOT EXISTS Infor(User INTEGER, Streets INTEGER, District INTEGER);
2.kazbek17_1.rar Перезалил.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1kazbek17_1.rar [2.2KB] [270]
Ответов: 704
Рейтинг: 44
#1213: 2013-12-02 09:04:03 ЛС | профиль | цитата
Tad писал(а):
1. Создать таблицы нормально, как просят авторы SQLite.

1.Спасибо Tad за помощь, но ваш пример не работает почему то. И еще при создание таблицы выдает ошибку
near "Not": syntax error убрал значение IF NOT EXISTS, то тогда цепляется за
near "AUTOINCREMENT": syntax error я так и не понял почему не работают данные операторы.

2.Вашем примере показано, что можно выбирать только по одному значению, а мне нужно не одну улицу вводить в таблицу, т.е привязать к клиенту, их может быть несколько. Нужно сохранять несколько улиц, несколько районов одному клиенту.
карма: 0

0
Ответов: 1535
Рейтинг: 176
#1214: 2013-12-02 10:51:41 ЛС | профиль | цитата
Kazbek17 писал(а):
Спасибо Tad за помощь, но ваш пример не работает почему то
Проверил пример у себя, всё работает. Никаких ошибок не наблюдал.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#1215: 2013-12-02 10:53:58 ЛС | профиль | цитата
2. Понял.
1. Нужно добавить то, что выделено:
Select NameStreets From Streets Where id_NameStreets in (Select NameStreets From Table_Infor WHERE Id_UserName=%1);

Вот это (в той схеме выше) у меня прекрасно работает:
SELECT name FROM streets WHERE id in (SELECT Streets FROM infor WHERE User=4);

Только нужно иметь ввиду, что такой запрос хитро работает:
если у твоего Id_UserName одна и та же улица повторяется несколько раз, то в результате запроса она отразится только ОДИН раз.

Kazbek17 писал(а):
ваш пример не работает почему то.
Причину неудач ищи у себя.
Подождём. Может ещё кто-то захочет посмотреть.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)