Вверх ↑
Этот топик читают: Гость
Ответов: 2362
Рейтинг: 683
#1636: 2025-02-18 15:16:11 ЛС | профиль | цитата
Подскажите кто знает как вывести номер строки по порядку при SELECT. Пробовал различные варианты и не один не заработал. Нужно при таком запросе:

SELECT номер_по_порядку,name,city FROM myTable
Чтоб в таблице получилось:

1 Петров Москва
2 Иванов Минск
3 Сидоров Киев
4 Смирнов Киров
5 Малевич Сидней
карма: 11

0
Ответов: 878
Рейтинг: 187
#1637: 2025-02-18 16:13:10 ЛС | профиль | цитата
sla8a писал(а):
Подскажите кто знает как вывести номер строки по порядку при SELECT

Это имелось в виду?
Add(MainForm,5487311,140,112)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,294,70)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,133,238)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent1,[])
}
Add(DS_SQLite,11171972,196,126)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,245,126)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,231,245)
{
 SQL="SELECT\r\n        ROWID as 'номер_по_порядку',\r\n        name,\r\n        city\r\nFROM\r\n	myTable;\r\n	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
}
Add(DSC_Exec,13859579,469,112)
{
 DSManager="bd"
}
Add(MT_String,9368895,371,112)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,420,112)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,350,245)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,287,245)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,231,203)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,189,238)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(214,244)(214,209)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(221,258)(221,293)])
}
Add(MST_ColAction,5774788,231,287)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,308,126)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}


--- Добавлено в 2025-02-18 16:32:51

sla8a, или даже так.

Add(MainForm,5487311,252,147)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,406,105)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,245,273)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent1,[])
}
Add(DS_SQLite,11171972,308,161)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,357,161)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,343,280)
{
 SQL="SELECT\r\n        ROW_NUMBER () OVER (ORDER BY '' ) RowNum,\r\n        name,\r\n        city\r\nFROM\r\n	myTable;\r\n	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
}
Add(DSC_Exec,13859579,581,147)
{
 DSManager="bd"
}
Add(MT_String,9368895,483,147)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,532,147)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,462,280)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,399,280)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,343,238)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,301,273)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(326,279)(326,244)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(333,293)(333,328)])
}
Add(MST_ColAction,5774788,343,322)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,420,161)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}


Редактировалось 2 раз(а), последний 2025-02-18 16:32:51
карма: 18

0
Ответов: 2362
Рейтинг: 683
#1638: 2025-02-19 07:54:07 ЛС | профиль | цитата
Gunta, спасибо что откликнулись. Мне нужен номер по порядку строк в таблице в независимости от того как они записаны в базе данных. ROWID точно для этих целей не подходит. Достаточно отсортировать по city:

Add(MainForm,5487311,210,140)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,364,98)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,203,266)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent1,[])
}
Add(DS_SQLite,11171972,266,154)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,315,154)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,301,273)
{
 SQL="SELECT\r\n        ROWID as 'номер_по_порядку',\r\n        name,\r\n        city\r\nFROM\r\n	myTable\r\nORDER BY city;\r\n	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
}
Add(DSC_Exec,13859579,539,140)
{
 DSManager="bd"
}
Add(MT_String,9368895,441,140)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,490,140)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,420,273)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,357,273)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,301,231)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,259,266)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(284,272)(284,237)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(291,286)(291,321)])
}
Add(MST_ColAction,5774788,301,315)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,378,154)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Второй вариант у меня выдает ошибку с таким текстом: near "(": syntax error:

Add(MainForm,2363590,245,105)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,399,63)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,238,231)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent1,[])
}
Add(DS_SQLite,11171972,301,119)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,350,119)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,336,238)
{
 SQL="SELECT\r\n        ROW_NUMBER () OVER (ORDER BY '' ) RowNum,\r\n        name,\r\n        city\r\nFROM\r\n	myTable;\r\n	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
 link(onError,10314794:doMessage,[(380,258)(380,286)])
}
Add(DSC_Exec,13859579,574,105)
{
 DSManager="bd"
}
Add(MT_String,9368895,476,105)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,525,105)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,455,238)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,392,238)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,336,196)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,294,231)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(319,237)(319,202)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(326,251)(326,286)])
}
Add(MST_ColAction,5774788,336,280)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,413,119)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Add(Message,10314794,392,280)
{
}

Перепробовал много различных вариантов из того что удалось найти и не один не заработал. Прикручивать отдельно счетчик выдаваемых строк DSC_Query по onQuery мне не подходит.
карма: 11

0
Ответов: 878
Рейтинг: 187
#1639: 2025-02-19 08:04:48 ЛС | профиль | цитата
Второй вариант у меня работает. Всё делал по инструкции - https://www.sqlitetutorial.net/sqlite-window-functions/sqlite-row_number/
Моя версия sqlite3.dll – 3.43.0
Попробуйте скачать последнюю и попробовать с ней
https://www.sqlite.org/download.html
карма: 18

0
Ответов: 183
Рейтинг: 4
#1640: 2025-02-19 08:14:52 ЛС | профиль | цитата
2006г..... версия sqlite в папке Hiasm. Наверное настало время его обновить , он даже не поддерживает журнал WAL, не говоря об остальном.
Второй вариант у меня выдает ошибку с таким текстом: near "(": syntax error:

С версией 3.48 работает.

Редактировалось 2 раз(а), последний 2025-02-19 08:16:02
карма: 1

0
Ответов: 2362
Рейтинг: 683
#1641: 2025-02-19 08:17:10 ЛС | профиль | цитата
Gunta писал(а):
Попробуйте скачать последнюю и попробовать с ней
Скачал версию 3.49.1 второй пример перестал выдавать ошибку, но и не решил мою проблему:
Add(MainForm,2363590,245,105)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,399,63)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,238,231)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent1,[])
}
Add(DS_SQLite,11171972,301,119)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,350,119)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,336,238)
{
 SQL="SELECT\r\n        ROW_NUMBER () OVER (ORDER BY '' ) RowNum,\r\n        name,\r\n        city\r\nFROM\r\n	myTable\r\nORDER BY city;\r\n	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
 link(onError,10314794:doMessage,[(380,258)(380,286)])
}
Add(DSC_Exec,13859579,574,105)
{
 DSManager="bd"
}
Add(MT_String,9368895,476,105)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,525,105)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,455,238)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,392,238)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,336,196)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,294,231)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(319,237)(319,202)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(326,251)(326,286)])
}
Add(MST_ColAction,5774788,336,280)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,413,119)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Add(Message,10314794,392,280)
{
}

Редактировалось 1 раз(а), последний 2025-02-19 08:17:47
карма: 11

0
Ответов: 878
Рейтинг: 187
#1642: 2025-02-19 08:25:52 ЛС | профиль | цитата
sla8a писал(а):
Скачал версию 3.49.1 второй пример перестал выдавать ошибку, но и не решил мою проблему:

Запрос должен быть чуть другим
Add(MainForm,2363590,217,98)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,371,56)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,210,224)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent1,[])
}
Add(DS_SQLite,11171972,273,112)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,322,112)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,308,231)
{
 SQL="SELECT\r\n        ROW_NUMBER () OVER (ORDER BY 'city' ) RowNum,\r\n        name,\r\n        city\r\nFROM\r\n	myTable;\r\n	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
 link(onError,10314794:doMessage,[(352,251)(352,279)])
}
Add(DSC_Exec,13859579,546,98)
{
 DSManager="bd"
}
Add(MT_String,9368895,448,98)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,497,98)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,427,231)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,364,231)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,308,189)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,266,224)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(291,230)(291,195)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(298,244)(298,279)])
}
Add(MST_ColAction,5774788,308,273)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,385,112)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Add(Message,10314794,364,273)
{
}


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

0
Ответов: 2362
Рейтинг: 683
#1643: 2025-02-19 08:54:27 ЛС | профиль | цитата
Gunta, а нет какого-то универсального запроса, чтоб он не зависел от ORDER BY от INNER JOIN и прочего. Неужели то что мне нужно это что-то сверхъестественное?

Add(MainForm,2363590,259,189)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,413,147)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,252,315)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent1,[])
}
Add(DS_SQLite,11171972,315,203)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,364,203)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,350,322)
{
 SQL="SELECT\r\n        ROW_NUMBER () OVER (ORDER BY 'city') RowNum,\r\n        name,\r\n        city\r\nFROM\r\n	myTable\r\nORDER BY city DESC;\r\n	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
 link(onError,10314794:doMessage,[(394,342)(394,370)])
}
Add(DSC_Exec,13859579,588,189)
{
 DSManager="bd"
}
Add(MT_String,9368895,490,189)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,539,189)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,469,322)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,406,322)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,350,280)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,308,315)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(333,321)(333,286)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(340,335)(340,370)])
}
Add(MST_ColAction,5774788,350,364)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,427,203)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Add(Message,10314794,406,364)
{
}
Все печально :(
карма: 11

0
Ответов: 522
Рейтинг: 167
#1644: 2025-02-19 11:01:34 ЛС | профиль | цитата
Gunta писал(а):
Запрос должен быть чуть другим

Этот вариант у меня работает . Windows 11 Pro 24H2. Версия sqlite3 3.49.1
Ответ ИИ по этому вопросу, может кому будет интересно

В SQLite можно использовать подзапрос или оконную функцию `ROW_NUMBER()` (если версия SQLite поддерживает оконные функции, начиная с версии **3.25.0**). Вот как это можно сделать:

### 1. **С использованием оконной функции `ROW_NUMBER()` (рекомендуется, если версия SQLite ≥ 3.25.0):**

```sql
SELECT
ROW_NUMBER() OVER (ORDER BY name) AS номер_по_порядку,
name,
city
FROM myTable;
```

Этот запрос добавит нумерацию строк, отсортированных по столбцу `name`.

---

### 2. **С использованием подзапроса (подходит для всех версий SQLite):**

Если у вас старая версия SQLite, которая не поддерживает оконные функции, можно использовать подзапрос для нумерации строк:

```sql
SELECT
(SELECT COUNT(*) FROM myTable t2 WHERE t2.rowid <= t1.rowid) AS номер_по_порядку,
name,
city
FROM myTable t1
ORDER BY name;
```

Этот запрос работает следующим образом:
- Подзапрос `(SELECT COUNT(*) FROM myTable t2 WHERE t2.rowid <= t1.rowid)` считает количество строк, у которых `rowid` меньше или равен текущему `rowid`, что и создает нумерацию.
- `ORDER BY name` сортирует строки по столбцу `name`.

---

### 3. **С использованием временной таблицы (альтернативный способ):**

Если вам нужно сохранить порядок, можно создать временную таблицу с нумерацией:

```sql
-- Создаем временную таблицу с нумерацией
CREATE TEMP TABLE temp_table AS
SELECT
ROW_NUMBER() OVER (ORDER BY name) AS номер_по_порядку,
name,
city
FROM myTable;

-- Выбираем данные из временной таблицы
SELECT * FROM temp_table;

-- Удаляем временную таблицу (если больше не нужна)
DROP TABLE temp_table;
```

---

### Пример результата:

Для таблицы `myTable`:

| name | city |
|----------|---------|
| Петров | Москва |
| Иванов | Минск |
| Сидоров | Киев |
| Смирнов | Киров |
| Малевич | Сидней |

Результат запроса будет:

| номер_по_порядку | name | city |
|------------------|----------|---------|
| 1 | Петров | Москва |
| 2 | Иванов | Минск |
| 3 | Сидоров | Киев |
| 4 | Смирнов | Киров |
| 5 | Малевич | Сидней |

---

### Важно:
- Если вы используете `ORDER BY`, убедитесь, что он соответствует вашим требованиям к сортировке.
- Если версия SQLite старая (ниже 3.25.0), используйте подзапрос или временную таблицу.
карма: 4

0
Ответов: 2362
Рейтинг: 683
#1645: 2025-02-19 12:18:55 ЛС | профиль | цитата
tig-rrr, первый вариант и третий мне не подходит:
sla8a писал(а):
чтоб он не зависел от ORDER BY от INNER JOIN и прочего

Второй у меня не работает (выдает номер не по порядку):
Add(MainForm,2363590,217,168)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,6127294:doEvent1,[])
}
Add(StrList,3068266,399,126)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,217,301)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent2,[])
}
Add(DS_SQLite,11171972,301,182)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,350,182)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,336,301)
{
 SQL="SELECT\r\n(SELECT COUNT(*) FROM myTable t2 WHERE t2.rowid <= t1.rowid) AS номер_по_порядку,\r\nname,\r\ncity\r\nFROM myTable t1\r\nORDER BY name; 	"
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
 link(onError,10314794:doMessage,[(380,321)(380,349)])
}
Add(DSC_Exec,13859579,574,168)
{
 DSManager="bd"
}
Add(MT_String,9368895,476,168)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,525,168)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,455,301)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,392,301)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,336,259)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,294,294)
{
 InCount=2
 OutCount=3
 link(onEvent1,5644650:doClear,[(319,300)(319,265)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(326,314)(326,349)])
}
Add(MST_ColAction,5774788,336,343)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,413,182)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Add(Message,10314794,392,343)
{
}
Add(Hub,6127294,259,182)
{
 link(onEvent1,11171972:doOpen,[])
 link(onEvent2,11037579:doEvent1,[(283,195)(283,300)])
}

Нахожусь в некотором недоумении по данному вопросу. Почему это в БД реализовано через одно место? Есть много различных нужных плюшек под любые задачи, но такая простая задача требует каких-то плясок с бубном.

Редактировалось 1 раз(а), последний 2025-02-19 12:19:18
карма: 11

0
Ответов: 878
Рейтинг: 187
#1646: 2025-02-19 12:19:43 ЛС | профиль | цитата
sla8a писал(а):
а нет какого-то универсального запроса, чтоб он не зависел от ORDER BY от INNER JOIN и прочего. Неужели то что мне нужно это что-то сверхъестественное?



Add(MainForm,2363590,252,133)
{
 Width=542
 Height=306
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,11171972:doOpen,[])
}
Add(StrList,3068266,406,91)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,259,231)
{
 Left=25
 Top=5
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,5023393:doSwitch,[])
}
Add(DS_SQLite,11171972,308,147)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,357,147)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,483,238)
{
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
 link(onColumns,15038004:doAddCols,[])
}
Add(DSC_Exec,13859579,581,133)
{
 DSManager="bd"
}
Add(MT_String,9368895,483,133)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,532,133)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,602,238)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
}
Add(MST_DB,15038004,539,238)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,413,196)
{
 ClearAll=0
 MSTControl="asd"
}
Add(Hub,11037579,371,231)
{
 OutCount=3
 link(onEvent1,5644650:doClear,[(396,237)(396,202)])
 link(onEvent2,10017597:doString,[])
 link(onEvent3,5774788:doColAction,[(403,251)(403,286)])
}
Add(MST_ColAction,5774788,420,280)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,420,147)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Add(FormatStr,10017597,420,238)
{
 DataCount=1
 Mask="SELECT\r\n        ROW_NUMBER () OVER (ORDER BY city %1) Номер_строки,\r\n        name,\r\n        city\r\nFROM\r\n	myTable;\r\n	"
 link(onFString,9807701:doQuery,[])
}
Add(Switch,5023393,315,231)
{
 DataOn=String(DESC)
 DataOff=String(ASC)
 link(onSwitch,11037579:doEvent1,[])
}

карма: 18

0
Ответов: 522
Рейтинг: 167
#1647: 2025-02-19 12:35:45 ЛС | профиль | цитата
sla8a писал(а):
Второй у меня не работает (выдает номер не по порядку):

sla8a, если в запросе удалить ORDER BY name; то работает ...)
карма: 4

0
Ответов: 878
Рейтинг: 187
#1648: 2025-02-19 13:40:07 ЛС | профиль | цитата
sla8a, Ну и конечно всегда можно костыль вставить. Как же без них.

Add(MainForm,2363590,161,133)
{
 Width=584
 Height=344
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,6127294:doEvent1,[])
}
Add(StrList,3068266,343,91)
{
 Strings=#13:Петров;Москва|12:Иванов;Минск|12:Сидоров;Киев|13:Смирнов;Киров|14:Малевич;Сидней|
 Point(doGetIndex)
 Point(onGetIndex)
}
Add(Button,9912960,161,266)
{
 Left=105
 Top=270
 TabOrder=-1
 Caption="Select"
 Data=Integer(0)
 link(onClick,11037579:doEvent2,[])
}
Add(DS_SQLite,11171972,245,147)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,294,147)
{
 SQL="CREATE TABLE [myTable](\r\n  [name] text, \r\n  [city] text);"
 DSManager="bd"
 link(onExec,924678:doEnum,[])
}
Add(DSC_Query,9807701,280,266)
{
 SQL="SELECT\r\n        name,\r\n        city\r\nFROM\r\n	myTable\r\n;"
 DSManager="bd"
 link(onQuery,4378314:doEvent1,[])
 link(onError,10314794:doMessage,[(324,286)(324,314)])
}
Add(DSC_Exec,13859579,518,133)
{
 DSManager="bd"
}
Add(MT_String,9368895,420,133)
{
 link(onResult,653926:doString,[])
}
Add(FormatStr,653926,469,133)
{
 Mask="INSERT\r\nINTO [myTable](\r\n  [name], \r\n  [city])\r\nVALUES('%1','%2');           \r\n"
 link(onFString,13859579:doExec,[])
}
Add(MTStrTbl,9589444,504,273)
{
 Left=5
 Top=40
 Width=510
 Height=220
 Name="asd"
 Columns=#12:Номер_строки|4:name|4:city|
}
Add(MST_DB,15038004,448,273)
{
 MSTControl="asd"
}
Add(MST_Clear,5644650,280,224)
{
 MSTControl="asd"
 link(onChange,3739826:doReset,[])
}
Add(Hub,11037579,238,259)
{
 InCount=2
 OutCount=3
 link(onEvent1,5644650:doClear,[(263,265)(263,230)])
 link(onEvent2,9807701:doQuery,[])
 link(onEvent3,5774788:doColAction,[(270,279)(270,314)])
}
Add(MST_ColAction,5774788,280,308)
{
 Action=11
 Index=-2
 MSTControl="asd"
}
Add(ArrayEnum,924678,357,147)
{
 link(onItem,9368895:doMTString,[])
 link(Array,3068266:Array,[])
}
Add(Message,10314794,336,308)
{
}
Add(Hub,6127294,203,147)
{
 link(onEvent1,11171972:doOpen,[])
 link(onEvent2,11037579:doEvent1,[(227,160)(227,265)])
}
Add(Hub,4378314,343,266)
{
 link(onEvent1,3739826:doNext,[(368,272)(368,223)])
 link(onEvent2,2457002:doAdd,[])
}
Add(CounterEx,3739826,392,217)
{
 Point(doReset)
}
Add(MT_Add,2457002,392,273)
{
 InputMT=1
 link(onAdd,15038004:doAddRow,[])
 link(Data,3739826:Count,[])
}

карма: 18

0
Ответов: 2362
Рейтинг: 683
#1649: 2025-02-19 15:01:43 ЛС | профиль | цитата
Вот небольшой пример в общих чертах показывающий работу моей программы:

Add(MainForm,2363590,98,217)
{
 Width=742
 Height=394
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,6127294:doEvent1,[])
}
Add(DS_SQLite,11171972,259,35)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,308,35)
{
 SQL="CREATE TABLE TableOne(\r\n  id integer,\r\n  name text, \r\n  city text,\r\n  age integer);\r\n\r\nINSERT OR IGNORE INTO TableOne VALUES (0,'Петров','Москва',24);\r\nINSERT OR IGNORE INTO TableOne VALUES (1,'Иванов','Минск',43);\r\nINSERT OR IGNORE INTO TableOne VALUES (2,'Сидоров','Киев',28);\r\nINSERT OR IGNORE INTO TableOne VALUES (3,'Смирнов','Киров',19);\r\nINSERT OR IGNORE INTO TableOne VALUES (4,'Малевич','Сидне',53);\r\n\r\nCREATE TABLE TableColumn(\r\n  id integer,\r\n  name text,\r\n  width integer,\r\n  align integer, \r\n  visible integer,\r\n  position integer,\r\n  sql_text text,\r\n  hint text);\r\n  \r\nINSERT OR IGNORE INTO TableColumn VALUES (0,'№ п\п',60,2,1,0,'t1.id','Номер по порядку');\r\nINSERT OR IGNORE INTO TableColumn VALUES (1,'Фамилия',100,0,1,1,'t1.name','Фамилия пользователя');\r\nINSERT OR IGNORE INTO TableColumn VALUES (2,'Город',100,0,1,2,'t1.city','Город регистрации');\r\nINSERT OR IGNORE INTO TableColumn VALUES (3,'Возраст',60,2,1,3,'t1.age','Возраст пользователя');\r\n\r\n  "
 DSManager="bd"
}
Add(DSC_Query,9807701,728,441)
{
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
}
Add(MTStrTbl,9589444,364,371)
{
 Left=5
 Top=15
 Width=715
 Height=185
 Font=[MS Sans Serif,12,0,0,1]
 Name="MainTable"
 ColumnClick=1
 Grid=0
 link(onColumnClick,12387400:doValue,[])
}
Add(MST_DB,15038004,777,441)
{
 MSTControl="MainTable"
}
Add(Hub,6127294,140,231)
{
 OutCount=3
 link(onEvent1,11171972:doOpen,[(185,237)(185,41)])
 link(onEvent2,12312804:doEvent1,[])
 link(onEvent3,11316354:doQuery,[(175,251)(175,734)])
}
Add(MST_HDHints,1864349,574,259)
{
 MSTControl="MainTable"
 HintManager="hint_1"
 Point(doHDHints)
}
Add(MST_ColAction,3345400,420,203)
{
 MSTControl="MainTable"
}
Add(DSC_Query,7961655,287,147)
{
 SQL="SELECT name,width,align,hint,sql_text FROM TableColumn WHERE visible = 1 ORDER BY position"
 DSManager="bd"
 link(onQuery,11858022:doEvent1,[])
}
Add(StrList,16145845,462,147)
{
 @Hint=#9:Подсказки|
 AddHint(-25,-39,71,13,@Hint)
}
Add(DoData,15517015,462,259)
{
 link(onEventData,5742612:doEvent1,[])
 link(Data,16145845:Text,[])
}
Add(Hub,5742612,504,259)
{
 link(onEvent1,1864349:doHDHints,[])
 link(onEvent2,16145845:doClear,[(524,272)(524,136)(450,136)(450,160)])
}
Add(FormatStr,8952363,371,203)
{
 DataCount=3
 Mask="%1=%2==%3"
 link(onFString,3345400:doColAction,[])
}
Add(MT_MultiData,12338463,371,147)
{
 From=3
 link(onData1,16145845:doAdd,[])
 link(onData2,8664963:doAdd,[(416,160)(416,188)])
}
Add(Hub,11858022,336,147)
{
 link(onEvent1,12338463:doSeparateMT,[])
 link(onEvent2,8952363:doString,[(360,160)(360,209)])
}
Add(MST_Clear,2976861,560,378)
{
 MSTControl="MainTable"
}
Add(StrList,8664963,595,182)
{
 @Hint=#10:sql строка|
 AddHint(-19,-27,66,13,@Hint)
}
Add(FormatStr,8918789,686,441)
{
 DataCount=3
 Mask="SELECT %3\r\nFROM TableOne t1 \r\nORDER BY %1 %2"
 link(onFString,9807701:doQuery,[])
 link(Str1,8471684:getVar,[])
 link(Str2,2686934:getVar,[])
 AddHint(-28,63,96,39,Mask)
}
Add(LineBreakEx,8471684,686,399)
{
 Caption="col"
 Type=2
}
Add(LineBreakEx,2686934,693,413)
{
 Caption="order"
 Type=2
}
Add(Replace,7910426,595,441)
{
 SubStr="\r\n"
 DestStr=","
 link(onReplace,5531245:doTrim,[])
 link(Str,8664963:Text,[])
}
Add(Trim,5531245,644,441)
{
 Char=","
 Mode=2
 link(onTrim,8918789:doString,[])
}
Add(StrList,16350257,455,392)
{
 Strings=#3:ASC|4:DESC|0:|
 AddHint(-8,-57,36,39,Strings)
}
Add(ArrayRW,5014116,406,441)
{
 link(onRead,1521343:doRead,[])
 link(Array,8664963:Array,[(412,306)(615,306)])
 link(Index,12387400:Value,[])
}
Add(ArrayRW,1521343,469,441)
{
 link(onRead,7910426:doReplace,[])
 link(Array,16350257:Array,[])
 link(Index,16068425:Count,[(482,431)(496,431)])
}
Add(CounterEx,16068425,490,378)
{
 Max=1
 Point(doReset)
 link(onNext,15785294:doEvent1,[])
}
Add(LineBreakEx,16767817,406,483)
{
 Caption="col"
 Type=3
 link(_Data,5014116:Item,[])
}
Add(LineBreakEx,4272821,469,483)
{
 Caption="order"
 Type=3
 link(_Data,1521343:Item,[])
}
Add(Memory,12387400,413,378)
{
 Default=Integer(0)
 link(onData,16068425:doNext,[])
 AddHint(0,-19,21,13,Default)
}
Add(HubEx,3716662,355,441)
{
 link(onEvent,5014116:doRead,[])
}
Add(HintManager,15662105,532,210)
{
 Name="hint_1"
 Font=[MS Sans Serif,12,0,0,1]
 HintWidth=150
}
Add(MTStrTbl,8976226,245,637)
{
 Left=5
 Top=205
 Width=715
 Height=140
 Font=[MS Sans Serif,12,0,0,1]
 Name="SettingTable"
 Columns=#12:Название=100|10:Ширина=100|4:id=0|
 ColumnClick=1
 CheckBoxes=0
 Grid=0
 link(onCheck,4325680:doEvent1,[])
}
Add(DSC_Query,11316354,245,728)
{
 SQL="SELECT name,width,id,visible FROM TableColumn ORDER BY position"
 DSManager="bd"
 link(onQuery,13973037:doSplit,[])
}
Add(MST_RowAction,9077761,350,770)
{
 MSTControl="SettingTable"
}
Add(MST_CheckBoxes,987231,350,728)
{
 MSTControl="SettingTable"
 link(IndexRow,9077761:EndIdx,[(356,715)(401,715)(401,823)(363,823)])
}
Add(MT_Part,13973037,294,728)
{
 After=2
 link(onSplit,987231:doCheckBox,[])
 link(onPart,9077761:doRowAction,[(334,741)(334,776)])
}
Add(DSC_Query,8389131,455,658)
{
 DSManager="bd"
}
Add(FormatStr,5628721,413,658)
{
 Mask="UPDATE TableColumn SET visible = %2 WHERE id=%1"
 link(onFString,8389131:doQuery,[])
 link(Str2,4723385:Value2,[])
}
Add(Hub,4325680,294,651)
{
 OutCount=3
 link(onEvent1,4723385:doValue,[(316,657)(316,615)])
 link(onEvent2,12391129:doRead,[])
 link(onEvent3,12312804:doEvent2,[(314,671)(314,693)(187,693)(187,251)])
}
Add(MT_MultiMem,4723385,413,609)
{
}
Add(MST_ArrayRows,13277145,322,609)
{
 MSTControl="SettingTable"
}
Add(MT_MTArrayRW,12391129,322,658)
{
 link(onRead,12839256:doSeparateMT,[])
 link(Array,13277145:Strings,[])
}
Add(MT_MultiData,12839256,364,658)
{
 From=2
 Count=1
 link(onData1,5628721:doString,[])
}
Add(Hub,12312804,231,238)
{
 InCount=2
 OutCount=5
 link(onEvent1,3614531:doClear,[(259,244)(259,104)])
 link(onEvent2,8664963:doClear,[(583,251)(583,195)])
 link(onEvent3,7961655:doQuery,[(266,258)(266,153)])
 link(onEvent4,15517015:doData,[])
 link(onEvent5,3716662:doWork2,[(318,272)(318,447)])
}
Add(Hub,15785294,532,378)
{
 link(onEvent1,2976861:doClear,[])
 link(onEvent2,3716662:doWork3,[(555,391)(555,511)(359,511)])
}
Add(MST_Clear,3614531,287,98)
{
 ClearAll=0
 MSTControl="MainTable"
}
Add(InfoTip,582471,217,84)
{
 Info=#16:Основная таблица|
 Width=617
 Height=480
}
Add(InfoTip,11398193,217,588)
{
 Info=#16:Таблица настроек|
 Width=316
 Height=242
}
Еще добавьте что столбцы в основной таблице могут меняться местами из таблицы настроек. Запрос намного сложнее и включает и объединение нескольких таблиц из БД (INNER JOIN) и фильтрацию (LIKE). И была мысль чтоб номер по порядку был занесен в данные столбца (вместо t1.id):

INSERT OR IGNORE INTO TableColumn VALUES (0,'№ п\п',60,2,1,0,'t1.id','Номер по порядку');
Почему и нет возможности (не городя лишнего) привязать его к ORDER BY.
Gunta писал(а):
всегда можно костыль вставить

Так у меня и стоит костыль почти с самого начала проекта на выдачу номера по порядку. А тут увеличилось количество функций и захотелось избавиться от костыля.
карма: 11

0
Ответов: 878
Рейтинг: 187
#1650: 2025-02-19 17:05:25 ЛС | профиль | цитата
sla8a, поправил, всё вроде работает. Не стал менять дданные в твоей базе. Думаю, разберёшся
Add(MainForm,2363590,70,196)
{
 Width=742
 Height=394
 Caption="Тест с нумерацией"
 Position=1
 link(onCreate,6127294:doEvent1,[])
}
Add(DS_SQLite,11171972,245,14)
{
 Name="bd"
 FileName=":memory:"
 link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,294,14)
{
 SQL="CREATE TABLE TableOne(\r\n  id integer,\r\n  name text, \r\n  city text,\r\n  age integer);\r\n\r\nINSERT OR IGNORE INTO TableOne VALUES (0,'Петров','Москва',24);\r\nINSERT OR IGNORE INTO TableOne VALUES (1,'Иванов','Минск',43);\r\nINSERT OR IGNORE INTO TableOne VALUES (2,'Сидоров','Киев',28);\r\nINSERT OR IGNORE INTO TableOne VALUES (3,'Смирнов','Киров',19);\r\nINSERT OR IGNORE INTO TableOne VALUES (4,'Малевич','Сидне',53);\r\n\r\nCREATE TABLE TableColumn(\r\n  id integer,\r\n  name text,\r\n  width integer,\r\n  align integer, \r\n  visible integer,\r\n  position integer,\r\n  sql_text text,\r\n  hint text);\r\n  \r\nINSERT OR IGNORE INTO TableColumn VALUES (0,'№ п\п',60,2,1,0,'t1.id','Номер по порядку');\r\nINSERT OR IGNORE INTO TableColumn VALUES (1,'Фамилия',100,0,1,1,'t1.name','Фамилия пользователя');\r\nINSERT OR IGNORE INTO TableColumn VALUES (2,'Город',100,0,1,2,'t1.city','Город регистрации');\r\nINSERT OR IGNORE INTO TableColumn VALUES (3,'Возраст',60,2,1,3,'t1.age','Возраст пользователя');\r\n\r\n  "
 DSManager="bd"
}
Add(DSC_Query,9807701,882,427)
{
 DSManager="bd"
 link(onQuery,15038004:doAddRow,[])
}
Add(MTStrTbl,9589444,350,350)
{
 Left=5
 Top=15
 Width=715
 Height=185
 Font=[MS Sans Serif,12,0,0,1]
 Name="MainTable"
 ColumnClick=1
 Grid=0
 link(onColumnClick,12387400:doValue,[])
}
Add(MST_DB,15038004,931,427)
{
 MSTControl="MainTable"
}
Add(Hub,6127294,126,210)
{
 OutCount=3
 link(onEvent1,11171972:doOpen,[(171,216)(171,20)])
 link(onEvent2,12312804:doEvent1,[])
 link(onEvent3,11316354:doQuery,[(161,230)(161,713)])
}
Add(MST_HDHints,1864349,560,238)
{
 MSTControl="MainTable"
 HintManager="hint_1"
 Point(doHDHints)
}
Add(MST_ColAction,3345400,406,182)
{
 MSTControl="MainTable"
}
Add(DSC_Query,7961655,273,126)
{
 SQL="SELECT name,width,align,hint,sql_text FROM TableColumn WHERE visible = 1 ORDER BY position"
 DSManager="bd"
 link(onQuery,11858022:doEvent1,[])
}
Add(StrList,16145845,448,126)
{
 @Hint=#9:Подсказки|
 AddHint(-25,-39,71,13,@Hint)
}
Add(DoData,15517015,448,238)
{
 link(onEventData,5742612:doEvent1,[])
 link(Data,16145845:Text,[])
}
Add(Hub,5742612,490,238)
{
 link(onEvent2,16145845:doClear,[(510,251)(510,115)(436,115)(436,139)])
}
Add(FormatStr,8952363,357,182)
{
 DataCount=3
 Mask="%1=%2==%3"
 link(onFString,3345400:doColAction,[])
}
Add(MT_MultiData,12338463,357,126)
{
 From=3
 link(onData1,16145845:doAdd,[])
 link(onData2,8664963:doAdd,[(431,139)(431,167)])
}
Add(Hub,11858022,322,126)
{
 link(onEvent1,12338463:doSeparateMT,[])
 link(onEvent2,8952363:doString,[(346,139)(346,188)])
}
Add(MST_Clear,2976861,546,357)
{
 MSTControl="MainTable"
}
Add(StrList,8664963,581,161)
{
 @Hint=#10:sql строка|
 AddHint(-19,-27,66,13,@Hint)
}
Add(FormatStr,8918789,833,427)
{
 DataCount=3
 Mask=""
 Point(FString)
 Point(doMask)
 link(onFString,9807701:doQuery,[])
 link(Str1,8471684:getVar,[])
 link(Str2,2686934:getVar,[])
 AddHint(97,-109,15,13,Mask)
}
Add(LineBreakEx,8471684,833,385)
{
 Caption="col"
 Type=2
}
Add(LineBreakEx,2686934,840,399)
{
 Caption="order"
 Type=2
}
Add(Replace,7910426,581,420)
{
 SubStr="\r\n"
 DestStr=","
 link(onReplace,5531245:doTrim,[])
 link(Str,8664963:Text,[])
}
Add(Trim,5531245,630,420)
{
 Char=","
 Mode=2
 link(onTrim,10597090:doReplace,[])
}
Add(StrList,16350257,441,371)
{
 Strings=#3:ASC|4:DESC|0:|
 AddHint(-8,-57,36,39,Strings)
}
Add(ArrayRW,5014116,392,420)
{
 link(onRead,1521343:doRead,[])
 link(Array,8664963:Array,[(398,285)(601,285)])
 link(Index,12387400:Value,[])
}
Add(ArrayRW,1521343,455,420)
{
 link(onRead,15278921:doEvent1,[])
 link(Array,16350257:Array,[])
 link(Index,16068425:Count,[(468,410)(482,410)])
}
Add(CounterEx,16068425,476,357)
{
 Max=1
 Point(doReset)
 link(onNext,15785294:doEvent1,[])
}
Add(LineBreakEx,16767817,392,462)
{
 Caption="col"
 Type=3
 link(_Data,5014116:Item,[])
}
Add(LineBreakEx,4272821,455,462)
{
 Caption="order"
 Type=3
 link(_Data,1521343:Item,[])
}
Add(Memory,12387400,399,357)
{
 Default=Integer(0)
 link(onData,16068425:doNext,[])
 AddHint(0,-19,21,13,Default)
}
Add(HubEx,3716662,341,420)
{
 link(onEvent,5014116:doRead,[])
}
Add(HintManager,15662105,518,196)
{
 Name="hint_1"
 Font=[MS Sans Serif,12,0,0,1]
 HintWidth=150
}
Add(MTStrTbl,8976226,231,616)
{
 Left=5
 Top=205
 Width=715
 Height=140
 Font=[MS Sans Serif,12,0,0,1]
 Name="SettingTable"
 Columns=#12:Название=100|10:Ширина=100|4:id=0|
 ColumnClick=1
 CheckBoxes=0
 Grid=0
 link(onCheck,4325680:doEvent1,[])
}
Add(DSC_Query,11316354,231,707)
{
 SQL="SELECT name,width,id,visible FROM TableColumn ORDER BY position"
 DSManager="bd"
 link(onQuery,13973037:doSplit,[])
}
Add(MST_RowAction,9077761,336,749)
{
 MSTControl="SettingTable"
}
Add(MST_CheckBoxes,987231,336,707)
{
 MSTControl="SettingTable"
 link(IndexRow,9077761:EndIdx,[(342,694)(387,694)(387,802)(349,802)])
}
Add(MT_Part,13973037,280,707)
{
 After=2
 link(onSplit,987231:doCheckBox,[])
 link(onPart,9077761:doRowAction,[(320,720)(320,755)])
}
Add(DSC_Query,8389131,441,637)
{
 DSManager="bd"
}
Add(FormatStr,5628721,399,637)
{
 Mask="UPDATE TableColumn SET visible = %2 WHERE id=%1"
 link(onFString,8389131:doQuery,[])
 link(Str2,4723385:Value2,[])
}
Add(Hub,4325680,280,630)
{
 OutCount=3
 link(onEvent1,4723385:doValue,[(302,636)(302,594)])
 link(onEvent2,12391129:doRead,[])
 link(onEvent3,12312804:doEvent2,[(300,650)(300,672)(173,672)(173,230)])
}
Add(MT_MultiMem,4723385,399,588)
{
}
Add(MST_ArrayRows,13277145,308,588)
{
 MSTControl="SettingTable"
}
Add(MT_MTArrayRW,12391129,308,637)
{
 link(onRead,12839256:doSeparateMT,[])
 link(Array,13277145:Strings,[])
}
Add(MT_MultiData,12839256,350,637)
{
 From=2
 Count=1
 link(onData1,5628721:doString,[])
}
Add(Hub,12312804,217,217)
{
 InCount=2
 OutCount=5
 link(onEvent1,3614531:doClear,[(245,223)(245,83)])
 link(onEvent2,8664963:doClear,[(569,230)(569,174)])
 link(onEvent3,7961655:doQuery,[(252,237)(252,132)])
 link(onEvent4,15517015:doData,[])
 link(onEvent5,3716662:doWork2,[(304,251)(304,426)])
}
Add(Hub,15785294,518,357)
{
 link(onEvent1,2976861:doClear,[])
 link(onEvent2,3716662:doWork3,[(541,370)(541,490)(345,490)])
}
Add(MST_Clear,3614531,273,77)
{
 ClearAll=0
 MSTControl="MainTable"
}
Add(InfoTip,582471,203,63)
{
 Info=#16:Основная таблица|
 Width=806
 Height=494
}
Add(InfoTip,11398193,203,567)
{
 Info=#16:Таблица настроек|
 Width=316
 Height=242
}
Add(InfoTip,13493447,532,231)
{
 Info=#14:У меня с этим |12:компонентом |16:не компелируется|
 HAlign=2
 Width=183
 Height=53
 Margin=5
}
Add(Hub,15278921,546,420)
{
 link(onEvent1,7910426:doReplace,[])
}
Add(Replace,10597090,679,420)
{
 SubStr="t1.id"
 DestStr="ROW_NUMBER () OVER (ORDER BY %1 %2)"
 link(onReplace,5798790:doString,[])
}
Add(FormatStr,5798790,735,420)
{
 DataCount=1
 Mask="SELECT\r\n %1\r\nFROM TableOne t1; \r\n"
 Point(FString)
 Point(doMask)
 link(onFString,8871894:doEvent1,[])
 AddHint(-76,-94,99,52,Mask)
}
Add(Hub,8871894,784,420)
{
 link(onEvent1,8918789:doMask,[(816,426)(816,440)])
 link(onEvent2,8918789:doString,[])
}


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

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