Текущий архив: 2008.03.02;
Скачать: CL | DM;
Вниз
StringGrid Найти похожие ветки
← →
alexsashkan (2008-02-07 12:17) [0]ЗДРАВСТВУЙТЕ!!! У меня есть вопросик,я делаю перемещение по СтрингГриду,тоесть кнопочку "Фёрст","Ласт".Вот в ДБГриде есть такая штучка,что можна перемещаться по записям..то на последнююю..то на первую..то добавить строку..и т.д.А вы не подскажите есть ли в Стрингриде такое ? и как до него добраться ??? Заранее благодарен!!!
← →
ketmar © (2008-02-07 12:22) [1]как напишешь — сразу и появится.
---
Understanding is not required. Only obedience.
← →
Palladin © (2008-02-07 12:24) [2]
> alexsashkan (07.02.08 12:17)
нет, нету, и никак до негоне добраться... расслабся...
советую написать решение квадратного уравнения... поверь, задача намного сложнее описанной тобою...
← →
alexsashkan (2008-02-07 12:37) [3]
> нет, нету, и никак до негоне добраться... расслабся...
> советую написать решение квадратного уравнения... поверь,
> задача намного сложнее описанной тобою...
удаление текущей записи
var
i,j: Integer;
begin
j:=SG1.Row; // строка с выделением
SG1.Rows[j].Clear;
for i:=j to SG1.RowCount-2 do
SG1.Rows[i].Assign(SG1.Rows[i+1]);
SG1.RowCount:=SG1.RowCount-1;
//--------------------------------------------------------
А вы говорили нельзя....может кто-то подскажет как на основании этого сделать теперь перемещение по списку на начало и финиш ???
← →
Сергей М. © (2008-02-07 12:41) [4]
> alexsashkan
за каким лешим тебе понадобилось изобретать этот велосипед ?)
Есть же готовая связка ClientDataSet -> DataSource -> DBGrid, чем она плоха ?
← →
alexsashkan (2008-02-07 12:44) [5]
> за каким лешим тебе понадобилось изобретать этот велосипед
> ?)
>
> Есть же готовая связка ClientDataSet -> DataSource -> DBGrid,
> чем она плоха ?
Потому что в DBGrid нельзя добавить новую Строку и заполнить её значения,если до этого у тебя уже заполнена вся "DBGrid" и без потери данных этого у меня не получаеться.Потому я и выбрал СтрингГрид,из-за того что после выборки чреез Запрос я могу в у существующим данным добавить ещё...не потеряв выборку из запроса
← →
Сергей М. © (2008-02-07 12:48) [6]
> в DBGrid нельзя добавить новую Строку
Конечно нельзя.
В DBGrid нет никаких строк, в отличии от StringGrid этот компонент служит лишь для отображения данных, а сами данные находятся в DataSet.
> после выборки чреез Запрос я могу в у существующим данным
> добавить ещё...не потеряв выборку из запроса
Все тоже самое с успехом реализуется с пом. упомянутой связки.
> без потери данных этого у меня не получаеться
Ну это же совсем другой вопрос)
То что не получается вряд ли есть повод к изобретению велосипеда)
← →
ketmar © (2008-02-07 12:50) [7]>[3] alexsashkan (2008-02-07 12:37:00)
где это сказали, что нельзя? O_o
---
Understanding is not required. Only obedience.
← →
ketmar © (2008-02-07 12:52) [8]>[5] alexsashkan (2008-02-07 12:44:00)
о. вот тут мы доходим до, собственно, задачи. глядишь, не пройдёт и 50 постов, как задачу полностью сформулируют.
пойми ты, мы обычно требует озвучить оригинальную задачу не потому, что дико любопытные все. в основном потому, что в большинстве случаев задачу можно решить на ректально, а нормально. но новички этого могут просто не знать. и если мы задачу не выпытаем — так и будут использовать велосипеды и возмущаться, что «не придумали/не сделали удобную фичу».
---
Understanding is not required. Only obedience.
← →
Сергей М. © (2008-02-07 12:59) [9]
> ketmar © (07.02.08 12:52) [8]
Но, согласись, ректальность того или иного подхода далеко не всегда очевидна.
Скажем, тот же штатный DBGrid обладает рядом существенных недостатков и желание доработать его напильником порой вполне оправдано. Правда, это не случай автора)
← →
alexsashkan (2008-02-07 13:00) [10]Задача такая - АДОКвери,делаю запрос,получаю данные,они отображаються в ДБгриде,потом получаю данные из Екселя и мне данные из Екселя необходимо добавить в ДБГрид,тоесть добавить строки в ДбГрид,а потому как мне вчера обьяснили что этого сделать нельзя(на этом сайте),поэтому я выбрал СтрингГрид,для отображения данных...и добавления данных
← →
ketmar © (2008-02-07 13:04) [11]>[9] Сергей М. © (2008-02-07 12:59:00)
>согласись, ректальность того или иного подхода далеко не всегда очевидна.
соглсен. но она может быть очевидна кому-то другому. поэтому лучше сразу озвучть задачу — авось и пнут куда надо.
>тот же штатный DBGrid обладает рядом существенных недостатков и желание
>доработать его напильником порой вполне оправдано
и снова согласен.
>[10] alexsashkan (2008-02-07 13:00:00)
можно, но лучше не надо.
щаз из меня опять бред попрёт: композитный dataset?
---
Understanding is not required. Only obedience.
← →
Плохиш © (2008-02-07 13:05) [12]
> alexsashkan (07.02.08 13:00) [10]
Данные надо добавлять в свой "АДОКвери", т.к. все данные в нём, а не в "ДБГрид".
Про уже что-то почитать.
← →
Сергей М. © (2008-02-07 13:05) [13]
> добавить строки в ДбГрид..мне вчера обьяснили
> что этого сделать нельзя(на этом сайте)
И правильно тебе объяснили.
Добавление строк в DBGrid сводится не иначе как к добавлению записей в DataSet, к которому этот DBGrid привязан через DataSource.
Вот на работе с DataSet и следует сосредоточить усилия.
> АДОКвери
А какая СУБД используется ?
← →
Плохиш © (2008-02-07 13:06) [14]
> Про
читать как "Пора" :-)
← →
alexsashkan (2008-02-07 13:07) [15]
> А какая СУБД используется ?
SQL база
← →
ketmar © (2008-02-07 13:08) [16]>[15] alexsashkan (2008-02-07 13:07:00)
>>А какая СУБД используется ?
>SQL база
класс.
«-- акакой у вас автомобиль?
— с дверцами, колёсами и мотором!»
---
Understanding is not required. Only obedience.
← →
Сергей М. © (2008-02-07 13:09) [17]
> композитный dataset?
Зачем ?
Вариантов море - от гетерогенного запроса (если СУБД позволяет) до кэширующего наследника DataSet"а, коим вроде бы является хотя бы тот же ADODataSet
← →
ketmar © (2008-02-07 13:10) [18]>[17] Сергей М. © (2008-02-07 13:09:00)
>Зачем ?
от неумения читать документации. я ж тоже велосипедист знатный.
впрочем: перечисленное тобой не является ли частными случаями композитного dataset"а? хотя ты, наверное, понял верно, там подразумевалось «написать». %-)
---
Understanding is not required. Only obedience.
← →
Dennis I. Komarov © (2008-02-07 13:11) [19]> [15] alexsashkan (07.02.08 13:07)
SQL - это язык а не база
← →
Сергей М. © (2008-02-07 13:15) [20]Впрочем, гетерогенные запросы тут не прокатят - ADO, если не ошибаюсь, не позволит в данном случае.
Отметая BDE остаются варианты с кеширующими дейтасетами - ADODataSet, ClientDataSet, RXMemoryDataSet и иже с ними
← →
alexsashkan (2008-02-07 13:16) [21]Извинете ребята,что занял ваше время своим вопросом!!! то что вы мне рассказываете просто пугает меня...пугает потому что я непонимаю многое из того,что вы предлагаете....выши подходы к решению задачки.Поэтому я попробую решить свою задачку по своему способу.Если может кто-то..то подскажите как добавить новую строку к уже умеющимся данным в СтрингГриде ?
← →
Palladin © (2008-02-07 13:16) [22]TStringGrid.RowCount+F1
← →
Palladin © (2008-02-07 13:17) [23]только не говори, что не компилируется...
← →
Сергей М. © (2008-02-07 13:19) [24]
> как добавить новую строку к уже умеющимся данным в СтрингГриде
> ?
Нет ничего проще - просто увеличь на единицу зн-е св-ва RowCount.
Только - еще раз - это тупиковый путь.
Лучше все же разобраться с DataSet"ом.
← →
Игорь Шевченко © (2008-02-07 13:21) [25]А я дурак через in-memory dataset все делаю. Причем со стандартным DBGrid-ом.
← →
Palladin © (2008-02-07 13:21) [26]потом будет вопль, что данные не сохраняются...
← →
ketmar © (2008-02-07 13:23) [27]>[21] alexsashkan (2008-02-07 13:16:00)
я бы тебе посоветовал попытаться понять, о чём мы тут умничаем, конечно. но это чисто твой выбор. никто ж со знаниями не родился.
---
Understanding is not required. Only obedience.
← →
ketmar © (2008-02-07 13:24) [28]>[25] Игорь Шевченко © (2008-02-07 13:21:00)
ну, это как вариант. но блин, жалко ж memory. %-)
---
Understanding is not required. Only obedience.
← →
Плохиш © (2008-02-07 13:24) [29]
> alexsashkan (07.02.08 13:16) [21]
Помочь тебе не представляется возможным.
Смени профессию, пока не поздно.
← →
alexsashkan (2008-02-07 13:29) [30]
> Помочь тебе не представляется возможным.
> Смени профессию, пока не поздно.
Ты это зря так.да действительно ПЛОХИШ!!!я лиш спросил совета по коду...а не как жить...
← →
Slym © (2008-02-07 13:34) [31]alexsashkan (07.02.08 13:00) [10]
непонятно... тебе отображать или добавлять? Можно сначала добавить потом отобразить... Можно добавлять отображая...with ДБГрид.DataSource do
begin
Dataset.Append;
try
Dataset.FieldByName("поле1").Value:="значение";
Dataset.FieldByName("поле2").Value:="значение";
Dataset.Post;
except
Dataset.Cancel;
Raise;
end;
end;
← →
Плохиш © (2008-02-07 13:36) [32]
> я лиш спросил совета по коду
Тебе сразу сказали, что на велосипеде с треугольными колёсами ездить можно, но проще использовать круглые колёса, но ты упорствуешь и хочешь, что бы тебе отладили твоё чудище с треугольно-непонятными колёсами-ли.
← →
Сергей М. © (2008-02-07 13:40) [33]
> лиш спросил совета по коду...а не как жить
Типа "не учите меня жить, лучше помогите материально" ?)
Скажи честно, прежде чем задать этот вопрос, ты изучил хоть в какой-либо мере хоть какую-либо документацию к интересующему тебя компоненту ? Ту же пресловутую стандартную справку, например ?
← →
Slym © (2008-02-07 13:41) [34]alexsashkan (07.02.08 13:29) [30]
Не обращай внимания :) здесь не любять студентов-двоечников, халявщиков, горе программистов, и тех кто пытается вырезать гланды через ж...
Научись правильно задавать вопросы
← →
alexsashkan (2008-02-07 14:01) [35]
> with ДБГрид.DataSource do
> begin
> Dataset.Append;
> try
> Dataset.FieldByName("поле1").Value:="значение";
> Dataset.FieldByName("поле2").Value:="значение";
> Dataset.Post;
> except
> Dataset.Cancel;
> Raise;
> end;
> end;
делаю выборку
//------------------------
ADOQuery1.SQL.Text := "select distance FROM distanse where city1 = :CITY1 and city2 = :CITY2";
ADOQuery1.Parameters.ParamByName("CITY1").Value := COmboBox1.Text; //определяем значения для фильтра1
ADOQuery1.Parameters.ParamByName("CITY2").Value := COmboBox2.Text; //определяем значения для фильтра2
ADOQuery1.Active:=true; // активируем запуск запроса на выполнение
GlobDistanse:=DBGrid1.Fields[0].AsFloat; //тута получаем дистанцию
Label4.Caption:="Содержимое справочника Растояния между городами ("+FloatToStr(GlobDistanse)+"км)";
//-------------------------------------------------------------------------------
ADOQuery1.Close; //отрубаем соединения,на всякий случай
ADOQuery1.SQL.Clear; //очищаем SQL запрос
ADOQuery1.SQL.Text := "select p.*, cast((p.cena * :distance) as float) As PlataZaProezd from perevozchik p";//получаю данные с вычесляемым полем
//-------------------
и в итоге я получаю данные,но после этого делаю выборку из Екселя,и вот мне необходимо до отображения этих даных с запроса,добавить в АДоКвери данные ез Екселя.
← →
Игорь Шевченко © (2008-02-07 14:05) [36]ketmar © (07.02.08 13:24) [28]
> жалко ж memory
Портится ? Загнивание битов происходит ?
"bit rot. Also bit decay. Hypothetical disease the existence of which has been deduced from the observation that unused programs or features will often stop working after sufficient time has passed, even if `nothing has changed". The theory explains that bits decay as if they were radioactive. As time passes, the contents of a file or the code in a program will become increasingly garbled.
There actually are physical processes that produce such effects (alpha particles generated by trace radionuclides in ceramic chip packages, for example, can change the contents of a computer memory unpredictably, and various kinds of subtle media failures can corrupt files in mass storage), but they are quite rare (and computers are built with error-detecting circuitry to compensate for them). The notion long favored among hackers that cosmic rays are among the causes of such events turns out to be a myth; see the cosmic rays entry for details. "
http://www.jargon.net/jargonfile/b/bitrot.html
← →
Игорь Шевченко © (2008-02-07 14:06) [37]alexsashkan (07.02.08 14:01) [35]
Автоматизация гужевого транспорта ?
← →
alexsashkan (2008-02-07 14:08) [38]
> Автоматизация гужевого транспорта ?
Это определение оптимального грузоперевозчика.
← →
Slym © (2008-02-07 14:09) [39]alexsashkan (07.02.08 14:01) [35]
добавить в АДоКвери данные ез Екселя
Добавить навсегда? или временно - пока работает программа?
это убрать:GlobDistanse:=DBGrid1.Fields[0].AsFloat;
и заменить на:GlobDistanse:=ADOQuery1.Fields[0].asFloatж
← →
alexsashkan (2008-02-07 14:13) [40]
> Добавить навсегда? или временно - пока работает программа?
временно!!!чтобы можна было увидить данные из SQL запроса и из Екселя в ДБГриде вместе..
← →
Slym © (2008-02-07 14:14) [41]alexsashkan (07.02.08 14:01) [35]
И вариант... Добавить данные Экселя единоразово в базу и забыть про него не катит?
← →
ketmar © (2008-02-07 14:17) [42]>[36] Игорь Шевченко © (2008-02-07 14:05:00)
дададад. я знаю термин «bit decay», сам использую иногда в пояснениях. %-)
---
Understanding is not required. Only obedience.
← →
alexsashkan (2008-02-07 14:18) [43]Slym © (07.02.08 14:14) [41]
в том то и дело,что я так вначале и хотел - забить в базу данных и не мучаться..,но именно нужно,чтобы через Ексель были данные эти... :-(
← →
Slym © (2008-02-07 14:19) [44]alexsashkan (07.02.08 14:13) [40]
временно!!!
Тагды можно попробывать такую схемку:ADOQuery1.SQL.Text := "select p.*, cast((p.cena * :distance) as float) As PlataZaProezd from perevozchik p";
ADOQuery1.LockType:=ltBatchOptimistic;
ADOQuery1.Active:=true;
а потом используя Slym © (07.02.08 13:34) [31]
добиваешь данные из экселя...
в базу они не попадут если не делать ADOQuery1.UpdateBatch
← →
ketmar © (2008-02-07 14:19) [45]>[43] alexsashkan (2008-02-07 14:18:00)
ну забери ты их из таблицы, фигакни в базу. сделай им время протухания/сессию (на случай, если твоя софтина упадёт; а она не может не упасть). и работай с базой. коли не хочешь нормально — делай так.
---
Understanding is not required. Only obedience.
← →
Сергей М. © (2008-02-07 14:25) [46]
> alexsashkan (07.02.08 14:01) [35]
Все что нужно сделать - это включить а ADOQuery режим пакетного обновления (см. справку по теме "Opening the dataset in batch update mode").
После выполнения выборки из "SQL базы" ты просто дополняешь полученный НД записями из Excel-таблицы (ADOQuery.Insert/Post), каждая добавленная запись немедленно отображается в DBGrid.
Все ! И никаких треугольных колес изобретать не нужно)
← →
ketmar © (2008-02-07 14:27) [47]>[46] Сергей М. © (2008-02-07 14:25:00)
batch — это такие «типа транзакции», я так понял? (ну не работал я с ADO практически %-( )
---
Understanding is not required. Only obedience.
← →
Сергей М. © (2008-02-07 14:31) [48]
> ketmar © (07.02.08 14:27) [47]
Это режим пакетных изменений.
Т.е. в этом режиме любые изменения в открытом НД не передаются сразу в базу, а накапливаются локально, после чего весь этот пакет изменений одним махом можно синхронизировать с базой (а можно и отменить, если соотв.изменения в базе не нужны)
Ну да, считай это нечто отдаленно сходным с транзакцией.
← →
Slym © (2008-02-07 14:31) [49]Сергей М. © (07.02.08 14:25) [46]
ltBatchOptimistic;
ЙА ФПИРЕД! :)
← →
Сергей М. © (2008-02-07 14:33) [50]
> ketmar © (07.02.08 14:27) [47]
> не работал я с ADO практически
Ну с TClientDataset-то наверняка работал ?
Там задействован тот же механизм, только зовется он там чуть по-другому и выглядит с т.з. на методы/св-ва/события чуть иначе. А суть та же.
← →
ketmar © (2008-02-07 14:36) [51]>[50] Сергей М. © (2008-02-07 14:33:00)
я, в принципе, всё понял. логика похожа. а интерес всё равно чисто спортивный уже. %-)
---
Understanding is not required. Only obedience.
← →
alexsashkan (2008-02-07 14:43) [52]
> ltBatchOptimistic;
> ЙА ФПИРЕД! :)
БОЛЬШОЕ СПАСИБо РЕБЯТА!!!А в особенносьти Slym © шо не забил на меня рукой как многие здеся пытались....и подмог мне советом ;-)
← →
Сергей М. © (2008-02-07 14:58) [53]
> alexsashkan (07.02.08 14:43) [52]
Так ведь тебе на это куча намеков была)
А ты уперся рогом в свой StringGrid)
Тебе ж, голодному, удочку предлагали, а не рыбу)
← →
Anatoly Podgoretsky © (2008-02-07 14:59) [54]
> потому как мне вчера обьяснили что этого сделать нельзя(на
> этом сайте),
Объяснили тебе правильно, а вот вывод из этого ты сделал неправильный, вместо работы с датасет, полез в stringgrid, с которым не умеешь работать, а чтобы сделать хоть частично похожим, там придется писать большую обертку.
Страницы: 1 2 вся ветка
Текущий архив: 2008.03.02;
Скачать: CL | DM;
Память: 0.62 MB
Время: 0.019 c