Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вставить данные в определенном месте, Сделать инсерт между строк 
:(
    Опции темы
Teran
  Дата 23.5.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Использую Ado компоненты
Этим кодом добавляю строку в базу
Код

ADOTable1.Insert;
ADOTable1.findfield('Test1').AsString:= Str1;
ADOTable1.findfield('Test2').AsString:=Str2;
ADOTable1.Post;

и она появляется в dbGrid-e в низу 

Как можно вставить строку например между 2 и 3 строками?
 smile  smile  smile  


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Teran
Дата 23.5.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Другими словами нужно чтоб по кнопке выделенная строка перемещалась либо в верх либо в низ в Datagrid-e
 smile  smile  smile  


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Droll
Дата 23.5.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 10.11.2004

Репутация: нет
Всего: 3



Можно, например, так:
добавляете новое поле (Num, например). В этом поле храните номер по порядку. Для просмотра используйте сортировку по этому полю. При вставке "прочесываете" всю базу с конца к началу (при учете сортировки) и заменяете значения этого поля на "значение + 1", пока не доберетесь до записи с номером вставляемой строки (ей также присваиваете номер +1).
После этого, вставляете свою строку и указываете ей нужный номер.
Далее дело за сортировкой.

Удачи! 
PM   Вверх
Демо
Дата 23.5.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 2
Всего: 50



Teran

В любой БД ты не сможешь физически добавить запись в середину(за исключением некоторых экзотических).
Сформулируй вопрос точнее. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Vit
Дата 23.5.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Просто помнить в что в базе данных нет сортировки по умолчанию. Чтобы она добавлялась в определённое место тогда должна быть указана соортировка, а чтобы ещё и грид отображал как надо, то его обновлять после вставки надо...


PS. Когда уже народ перестанет DBGrid пользоваться, чтобы смочь понять логику баз данных? 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Foley
Дата 23.5.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: нет
Всего: 7



Цитата(Vit @  23.5.2006,  21:16 Найти цитируемый пост)
Когда уже народ перестанет DBGrid пользоваться, чтобы смочь понять логику баз данных? 

а что ты предлагаешь? как еще можно лучше отобразить табличные данные? конечно, если ты не имел ввиду использование DB-компонент типа DBEdit и пр. и переходить по записям с помощью кнопок... 

Это сообщение отредактировал(а) Foley - 23.5.2006, 23:32
PM MAIL ICQ   Вверх
skyboy
Дата 24.5.2006, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Foley, берёшь DrawGrid... Сам заполняешь, сам управляешь... Делаешь, что хочешь... И тогда - переставляй, сортируй, выделяй... Например, чтоб отсортировать данные по значению вовсе не обязательно добавлять в запрос "ORDER BY" и опять гнать 10 Мб данных по дохлому диал-апу... Можно запихнуть данные в массив, извратиться над ними, а потом - отрисовать в гриде...  
PM MAIL   Вверх
DimassS
Дата 24.5.2006, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 12.4.2006
Где: Россия, Иркустк

Репутация: 1
Всего: 2



Цитата

PS. Когда уже народ перестанет DBGrid пользоваться, чтобы смочь понять логику баз данных?

Да, хотелось бы не пользоваться, но не могу найти один компонентик, называется FlexGrid, позволяет делать с собой всё что душе угодно, вплоть до объединения ячеек внутри... может слышали, не поможете найти? smile  
PM MAIL ICQ   Вверх
Foley
Дата 24.5.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: нет
Всего: 7



skyboy, я не это имел ввиду, просто некоторые думают, что работают не стаблицей непосредственно, а с гридом (т.е. фактически считают что грид-драйвер БД) поэтому появляются вопросы не "как вставить запись в табличку", а "как вставить запись в грид" 
PM MAIL ICQ   Вверх
lexsedrex
Дата 25.5.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



сделай после нажатия кнопки обновление дб грид, а еще лучше заполняй дб грид через адоквери типа так
adoQuery1.Close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Text:='select * from tab ';
adoQuery1.open;

тогда у тибе будет проще заполнять дбгрид, и данные будут вставлятся нормально.
еще б советовал делать вставку в базу так
 adoQuery1.Close;
adoQuery1.SQL.Clear;
memo2.Lines.Clear;
memo2.Lines.Add('insert into tab (hvoryj, doctor, grupa_krovi, zrist,'
+' diagnoz, vaga, rik_narodzenna, pryvyvky, istoria, '
+'viddilenna) values ('+QuotedStr(edit1.Text)+','+QuotedStr(edit2.Text)+','
+' '+QuotedStr(edit3.Text)+','+QuotedStr(edit4.Text)+','+QuotedStr(edit5.Text)+','
+' '+QuotedStr(edit6.Text)+','+QuotedStr(edit7.Text)+','
+' '+QuotedStr(memo3.Text)+','+QuotedStr(memo1.Text)+','
+' '+QuotedStr(combobox2.Items.Strings[combobox2.itemindex])+')');

adoQuery1.SQL.Text:=Memo2.Text;
adoQuery1.execsql;
верхний пример конечно грязный, но суть понятна 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0827 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.