Вверх ↑
Этот топик читают: Гость
Ответов: 41
Рейтинг: -3
#1: 2015-09-26 12:32:39 ЛС | профиль | цитата
Какие элементы можно использовать вместо этих, чтобы схема не была похожа на помойку...
Можно ли заменить эту схему несколькими компонентами?

code_36306.txt

карма: 1

0
файлы: 1code_36306.txt [5.8KB] [208]
Разработчик
Ответов: 26151
Рейтинг: 2127
#2: 2015-09-26 13:49:02 ЛС | профиль | цитата
PK.Kirill, а что за база данных, кстати? Разве штатные компоненты БД использовать нельзя, они ведь заточены под MT?
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#3: 2015-09-26 15:21:59 ЛС | профиль | цитата
nesco писал(а):
а что за база данных, кстати?
IC писал(а):
implementation

uses hiMSSQL;
PK.Kirill писал(а):
Какие элементы можно использовать вместо этих, чтобы схема не была похожа на помойку...
Просто рисовать схему нужно так, чтобы она "не была похожа на помойку."
pk_kirill_1.gif
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1pk_kirill_1.gif [23.3KB] [459]
Ответов: 41
Рейтинг: -3
#4: 2015-09-26 15:27:53 ЛС | профиль | цитата
В программе используется база данных MSSQL
InlineCode - это, уже не помню какой, немного измененный компонент,
т.к. мне были нужны данные отдельных ячеек а не строк

Короче видимо штатными компонентами красиво не сделать.

Тогда думаю мож написать что-то типа Стек, который имеет возможность выдавать себя в МТ поток
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#5: 2015-09-26 15:35:34 ЛС | профиль | цитата
PK.Kirill писал(а):
т.к. мне были нужны данные отдельных ячеек а не строк
После Select перечисляешь имена ячеек в нужном тебе порядке
SELECT d1, d12, d2, d11 FROM shmotki where name='%1'
и получаешь только то, что тебе нужно.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 41
Рейтинг: -3
#6: 2015-09-26 17:54:19 ЛС | профиль | цитата
[offtop]
SELECT d1, d12, d2, d11 FROM shmotki where name='%1'

когда я делал мне ячейки были нужны не в одной строке, а отдельными событиями
d1 например идет в заголовок формы
d2 это ссылка на фаил картинки
d3-d10 идет в таблицу свойств
d11 - суммируется со значениями из предыдущих запросов
[/offtop]

ну вопрос не в этом
можно ли заменить IndexToChanel, кучу Memory и MT_AddData несколькими компонентами
------------ Дoбавленo в 17.54:
Все придумал

Add(FormatStr,1868360,532,168)
{
DataCount=1
Mask="select * from shmotki where name='%1'"
link(onFString,16476611:_work_doRefresh,[])
}
Add(MST_RowAction,12105816,686,231)
{
Action=2
MSTControl="Shmot"
}
Add(InlineCode,16476611,588,168)
{
@Hint=#45:Формирует строку для добавления в StringTable|
WorkPoints=#15:_work_doRefresh|
EventPoints=#30:onRecNum=Номер записи (строка)|32:onColNum=Номер столбца (колонка)|22:onCell=Значение ячейки|84:onEnd=Конец запроса, Кол-во записей (строк) |
VarPoints=#33:_var_RecNum=Номер записи (строка)|35:_var_ColNum=Номер столбца (колонка)|
DataPoints=#37:_data_Query=Данные результата запроса|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|71:uses windows,Kol,Share,KOLEdb,Debug; //uses kol, Share, Debug; Win,|0:|4:type|30: THiAsmClass = class( TDebug )|10: private|17: FRecNum:Word;|17: FColNum:Word;|9: public|27: _data_Query: THI_Event;|24: onRecNum: THI_Event;|24: onColNum: THI_Event;|26: onCell: THI_Event; |21: onEnd: THI_Event;|55: // procedure doString( var _Data:TData; Index:word );|60: procedure _work_doRefresh(var _Data:TData; Index:word); |55: procedure _var_RecNum(var _Data:TData; Index:word);|55: procedure _var_ColNum(var _Data:TData; Index:word);|5: end;|0:|14:implementation|19: |13:uses hiMSSQL;|6: |0:|72:function SqlDateTimeStampToDateTime( TS: PSqlDateTimeStamp ): TDateTime;|20:var ST: TSystemTime;|5:begin|23: ST.wYear := TS.Year;|25: ST.wMonth := TS.month;|21: ST.wDay := TS.day;|23: ST.wHour := TS.hour;|27: ST.wMinute := TS.minute;|27: ST.wSecond := TS.second;|47: ST.wMilliseconds := TS.fraction div 1000000;|37: SystemTime2DateTime( ST, Result );|4:end;|0:|38:procedure THiAsmClass._work_doRefresh;|14:var qr:PQuery;|21: h,i:word; // ,n|13: dt:TData;|5:begin|41: dt := Readdata(_Data,_data_Query,nil);|34: if _isObject(dt,mssqlGUID) then|9: begin|34: qr := PQuery(ToObject(dt));|22:// _debug('ok');|18:// QR.First;|29:// _debug(QR.ColCount);|23: // Control.Clear;|40: // while Control.LVColCount > 0 do|34: // Control.LVColDelete(0);|0:|32: // if QR.ColCount > 0 then|40: // for i := 0 to QR.ColCount-1 do|95: // Control.LVColAdd(QR.ColNames[i],taleft,Control.Canvas.TextWidth(QR.ColNames[i])+20);|16: h:=0; |26: while not qr.EOF do|25: begin |36: _hi_onEvent( onRecNum, h );|22: FRecNum := h;|16: inc(h);|38: // N := Control.LVItemAdd('');|39: for i := 0 to QR.ColCount-1 do|16: begin|40: _hi_onEvent( onColNum, i );|26: FColNum := i;|41: case QR.Bindings[i].wType of|38: DBTYPE_STR,DBTYPE_WSTR:|24: // begin|52: _hi_onEvent( onCell, QR.SField[i]);|23: // end;|35: DBTYPE_I4,DBTYPE_I2:|52: _hi_onEvent( onCell, QR.SField[i]);|35: DBTYPE_R4,DBTYPE_R8:|52: _hi_onEvent( onCell, QR.SField[i]);|27: DBTYPE_NULL:|46: _hi_onEvent( onCell, 'NULL');|32: DBTYPE_EMPTY: |47: _hi_onEvent( onCell, 'EMPTY');|27: DBTYPE_DATE:|46: _hi_onEvent( onCell, '-dt-');|34: DBTYPE_DBTIMESTAMP:|102: _hi_onEvent( onCell, DateTime2StrShort( SqlDateTimeStampToDateTime(QR.TSField[i]) ));|17: end;|15: end;|17: QR.Next;|12: end;|41: _hi_onEvent( onEnd, QR.RowCount);|8: end;|4:end;|0:|0:|34:procedure THiAsmClass._var_RecNum;|5:begin|48: dtInteger(_Data, FRecNum);//_Data := FRecNum;|4:end;|0:|0:|34:procedure THiAsmClass._var_ColNum;|5:begin|50: dtInteger(_Data, FColNum);//_Data := FColNum;|4:end;|0:|0:|4:end.|
link(onCell,5174106:doAdd,[])
link(onEnd,3776698:doAdd,[(625,195)(625,237)])
}
Add(MT_Memory,6576510,651,112)
{
}
Add(MT_AddData,5174106,651,182)
{
Count=1
InputMT=0
link(onAdd,6576510:doValue,[(695,188)(695,153)(639,153)(639,118)])
link(Data1,15315969:Var2,[])
}
Add(GetDataEx,15315969,651,161)
{
link(Data,6576510:Value,[])
}
Add(MT_Add,3776698,630,231)
{
link(onAdd,12105816:doRowAction,[])
link(Data,15315969:Var1,[(636,166)])
}

Почему-то все идеи только ночью возникают
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#7: 2015-09-27 21:14:07 ЛС | профиль | цитата
PK.Kirill писал(а):
можно ли заменить IndexToChanel
Можно. Почему нет?
Даже можно, правильно построенным запросом к БД, сделать намного больше чем твоим IC
Например :
Declare @mydate=varchar[MAX]
SELECT @mydate = FIO + ',' + Сity + ',' + tel FROM mybd WHERE substr(FIO,1,Pos(' ',FIO))='Иванов'

В результате получишь строку(или несколько строк с "Иванов") со значениями, разделёнными запятой:
"Иванов Иван Иванович","Москва","12345678"
Детали ищи на MSDN - тонкостей не помню (давно не работал с MS SQL)а дальше дело техники
компонентом MT_String преобразовываешь в MT и на таблицу
------------ Дoбавленo в 21.18:
http://www.sql-ex.ru/index.php
------------ Дoбавленo в 21.14:
Судя по твоей IC, ты подключаешься к БД компонентом DS_OleDB. Зачем твоя самодеятельность - непонятно.
PK.Kirill писал(а):
когда я делал мне ячейки были нужны не в одной строке, а отдельными событиями
d1 например идет в заголовок формы
d2 это ссылка на фаил картинки
d3-d10 идет в таблицу свойств
d11 - суммируется со значениями из предыдущих запросов
Это делается очень просто без изобретения велосипеда :
pk_kirill_2.gif

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1pk_kirill_2.gif [9.7KB] [410]
Голосовали:PK.Kirill
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)