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

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

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

0
Ответов: 866
Рейтинг: 186
#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
Ответов: 2313
Рейтинг: 679
#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
Ответов: 866
Рейтинг: 186
#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
Ответов: 136
Рейтинг: 3
#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
Ответов: 2313
Рейтинг: 679
#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
Ответов: 866
Рейтинг: 186
#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
Ответов: 2313
Рейтинг: 679
#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
Ответов: 517
Рейтинг: 166
#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
Ответов: 2313
Рейтинг: 679
#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
Ответов: 866
Рейтинг: 186
#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
Ответов: 517
Рейтинг: 166
#1647: 2025-02-19 12:35:45 ЛС | профиль | цитата
sla8a писал(а):
Второй у меня не работает (выдает номер не по порядку):

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

0
Ответов: 866
Рейтинг: 186
#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
Ответов: 2313
Рейтинг: 679
#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
Ответов: 866
Рейтинг: 186
#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
Сообщение
...
Прикрепленные файлы
(файлы не залиты)