Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3

Модерирует : ShIvADeSt

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GreatOne
Вроде никогда не было проблем с количеством строк...  
Попробуй поставить брекпойнт на строчку Form3.StringGrid1.RowCount:=Form3.StringGrid1.RowCount+1 и последить - меняется ликоличество строк после 128.
 
Ну и для упрощения алгоритма - раз ты в грид помещаешь весь стринглист, то можно сразу задать нужное количество строк (n - сколько строк в начале грида должно остаться без изменения):
Код:
StringGrid.RowCount := StringList.Count + n;
for i := 0 to StringList.Count - 1 do begin
  StringGrid.Cells[0, i + n] := IntToStr(i + 1);
  StringGrid.Cells[1, i + n] := StringList[i];
  ...
end;

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 17:06 09-06-2007
zvyagaaa



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте, есть база данных в xml, каким образом ее можно подключить к DataSource? Есть ли стандартные компоненты для работы с xml? Дельфи 2006.

Всего записей: 782 | Зарегистр. 02-02-2005 | Отправлено: 17:41 09-06-2007
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zvyagaaa
ClientDataSet может из xml данные брать

----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 18:06 09-06-2007
Telmton

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вопрос. Заранее извиняюсь если не туда.  
 
Касается синтаксиса программы и использования uses.
 
Есть Unit1 (Form1). У него в разделе interface описывается тип TP1.
Еще есть Unit2 (Form2), в разделе interface которого описывается тип ТР2, использующий тип ТР1 (допустим для примера: ТР1=record a: Double; end;, TP2=record h:TP1 end;).
Для того чтобы использовать в описании типа ТР2 тип ТР1 нужно в разделе interface модуля Unit2 вставить строку "uses Unit1".
Еще в модуле Unit2 описывается тип ТР3.
 
Далее ситуация обстоит следующим образом. В модуле Unit1 нужно создать процедуру, использующую в качестве параметра тип ТР3. Создаю, нажимаю Ctrl+C и её объявление заносится в список процедур класса формы Form1. Таким образом, оно (объявление) оказывается в части interface модуля Unit1. Чтобы использовать этот тип, надо в разделе interface модуля Unit1 написать "Uses Unit2". Написал.
При нажатии на F9, программа, что естественно, выдает ошибку что-то вроде "circular uses" (точный текст не помню).
 
Вопрос такой: можно ли использовать тип ТР3 в модуле Unit1 без ограничений и при этом не перемещать его в Unit1, а оставить в Unit2 ?
Чую что нельзя, т.к. прочитал Хэлп. Но надежда еще есть, т.к. надеюсь что прочитал не всё.

Всего записей: 2 | Зарегистр. 09-06-2007 | Отправлено: 23:00 09-06-2007
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Такие проблемы называются ошибкой дизайна. Решаются очень просто. Создаётся ещё один юнит, куда выносятся все определения. Потом этот юнит подключается к обоим(первым двум) юнитам.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 23:21 09-06-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сорри за тупой вопрос просто в делфи не шарю.  
Есть исходный Код , установлен Borland Delphi 9 (2005) как скомпилить это всё в исходный файл?

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 16:18 10-06-2007
OOD

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема такая :
При добавлении записи в БД :
 

Код:
 
AdoQuery1.SQl.Text:='INSERT INTO teble (test, fio)VALUES ('#39+Edit2.Text+#39','#39+Edit1.Text+#39');';
 

 
Запись в БД добавляется но в DbGrid не отображается , как только добавлю следующую запись , то предыдущая добавляется ,а текущая нет Как избавиться от этого подскажите?
 
 

Всего записей: 3394 | Зарегистр. 20-05-2006 | Отправлено: 15:23 13-06-2007
gpi

Alone Wanderer
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOD
Попробуй AdoQuery1.Refresh после добавления записи

Всего записей: 432 | Зарегистр. 30-05-2004 | Отправлено: 16:37 13-06-2007
Figaro2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOD
погоди, а с какой стати insert вообще что-то должен отображать в гриде?  
Insert - это же вставка в таблицу, а не выборка из нее...
правильный подход -  
1. ADODataSet и соответствующий DataSource
2. ADODataSet1.CommandText = 'select * from tablename'
3. Грид со свойством DataSource, указывающим на то, что нарисовал в п.1
 
4. Судя по твоему коду , редактируешь ты не в самом гриде, а в отдельной форме (там, где у тебя контролы Edit1.Text и Edit2.Text). Посему перед вызовом формы сделай ADODataSet.Append, а после завершения редактирования - ADODataSet.Post

Всего записей: 245 | Зарегистр. 24-09-2005 | Отправлено: 16:40 13-06-2007 | Исправлено: Figaro2000, 16:42 13-06-2007
OOD

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gpi

Цитата:
Попробуй AdoQuery1.Refresh после добавления записи

Пишет "Обновление невозможно; установлена блокировки"

Всего записей: 3394 | Зарегистр. 20-05-2006 | Отправлено: 16:49 13-06-2007
gpi

Alone Wanderer
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOD
А к какому датасету подключён грид?

Всего записей: 432 | Зарегистр. 30-05-2004 | Отправлено: 19:19 13-06-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
OOD
По умолчанию (и не на всех СУБД может по другому) ADO работает с курсором на клиенте, поэтому даже если что-то поменялось в базе Refresh не поможет
Тут 2 варианта:
1. Как написал Figaro2000 делать Append, писать значения в соответствующие поля, затем Post
2. После выполнения  AdoQuery1.ExecSQL:  
ADODataset.Close; (Table, Query - который отображается на грид)
ADODataset.Open;
ADODataset.Locate(сохраненное значение ключевого поля)

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 22:49 13-06-2007 | Исправлено: RomanTim, 22:50 13-06-2007
Figaro2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanTim
Ты прав, но твой 2-й вариант хорош после групповых (пакетных, batch) изменений в БД через операторы insert\update\delete. Выполнять же заново запрос после каждого изменения (вставки-удаления-изменения одной записи) накладно по ресурсам. А контролы Edit, упомянутые  в вопросе, показывают что скорее всего идет ввод и корректировка по одной записи через форму.

Всего записей: 245 | Зарегистр. 24-09-2005 | Отправлено: 23:56 13-06-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Figaro2000
Бывает, что не всякую операцию вставки можно через Append сделать. Поэтому я и предложил 2 возможных варианта, а какой оптимален для конкретной задачи - пусть OOD сам выбирает - ему потом с юзерами общаться

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 08:19 14-06-2007
Figaro2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanTim
о как.. даже интересно... примерчик приведи - чего нельзя через Append сделать?

Всего записей: 245 | Зарегистр. 24-09-2005 | Отправлено: 08:57 14-06-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Figaro2000
Если это простой select * - то да, без проблем, а вот если более-менее сложный запрос, да из нескольких таблиц, да с какими-нибудь вычисляемыми полями... адо такой датасет может просто не позволить редактировать

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 10:53 14-06-2007
Figaro2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanTim
Ничего подобного, для того чтоб с такими запросами бороться, есть свойства UniqueTable, ResyncCommand  и т.д.   В свойствах ADODataset'а указывается таблица, в которую надо вносить изменения и SQL-запрос, который выдаст добавленную или отредактированную запись ... и ву-а-ля... Сам для работы с АДО использую BetterADODataset еще с 2001 года и ни разу не видел ситуации, с которой бы Append не справился.  Разумеется, речь идет про одиночные изменения через грид или форму. Пакетные (групповые) изменения - отдельный разговор.

Всего записей: 245 | Зарегистр. 24-09-2005 | Отправлено: 11:41 14-06-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Figaro2000
Никто и не говорит про пакетные изменения.
Если ты с какой-то проблемой не сталкивался - это еще отнюдь не гарантия того, что ее в природе не бывает.
Я дал человеку 2 варианта, что использовать ему виднее, флуд давай заканчивать.

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 11:57 14-06-2007
Figaro2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanTim
а я-то всего пример конкретный хотел получить

Всего записей: 245 | Зарегистр. 24-09-2005 | Отправлено: 13:18 14-06-2007
Sampron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто незнает почему в последних версиях Делфи скомпиленый файл на выходе имеет размер почти в два раза больше чем в старых версиях Делфи?

Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 14:05 14-06-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru