Форум программистов, компьютерный форум, киберфорум
Ruby on Rails
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1

Номер записи в БД

09.04.2013, 16:41. Показов 1748. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как получить порядковый номер записи в запросе SQL? Или можно получить его средствами Rails?
Пример: на каждой странице выводится 20 записей, каждую запись можно редактировать перейдя на след. страницу для редактирования. После редактирования и сохранения данных нужно вернутся на туже страницу, на которой находился запись, которую редактировали.

Сейчас решаю проблему так. Делаю запрос ко все таблице и дальше бегу в цикле по выборке, пока не найду нужную запись.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2013, 16:41
Ответы с готовыми решениями:

Узнать номер записи в DataTable по выбраной записи в DataGridView
Начнем по порядку: есть главная форма, на ней грид заполненный из датасета через биндинг Есть вторая форма из которой производится...

Номер записи в DBgrid
Какой параметр IBTable или DBgrid указывает на номер выделенного элемента в таблице? Тоесть в таблице с базой данных, в левой колонке...

Определить номер записи
Добрый день! Столкнулся с такой проблемой: при событии DBGrid-ondblclick из данные выводятся в новую форму (edit's). Как можно...

9
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
09.04.2013, 23:05
Жесть, ну вы чего, почитайте хотя бы какую-нибудь книгу для начинающих по Rails, по базам данных.

У каждой записи в Rails по умолчанию есть id метод
0
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
09.04.2013, 23:16  [ТС]
Цитата Сообщение от MpaKus Посмотреть сообщение
Жесть, ну вы чего, почитайте хотя бы какую-нибудь книгу для начинающих по Rails, по базам данных.

У каждой записи в Rails по умолчанию есть id метод
Да знаю я про id, но есть одно но. Записи из таблицы удаляют иногда и тогда id идут не попорядку!
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
09.04.2013, 23:23
вот потому и книгу прочтите, чтобы не делать так "Делаю запрос ко все таблице и дальше бегу в цикле по выборке, пока не найду нужную запись.", а искать запись по ID и понимать как решаются такие задачи.

Чтобы использовать pagination есть gem - kaminari (will_paginate)

Если уж нужен сортированный список, то есть act_as_list
0
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
09.04.2013, 23:35  [ТС]
Вы предлагаете искать номер записи по id? Тогда вот пример, table.id=[1, 3, 5, 10, 14]. Известный id = 5, номер записи = 3. Так как мне получить номер записи с помощью сортированного списка act_as_list? Что будет в списке? Вся таблица? Мне это не надо! Неужто нельзя чистым SQL запросом получить номер записи?
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
09.04.2013, 23:39
Выкиньте из головы вообще "номер записи = 3" пользуйтесь ID как все нормальные люди.

Вот получить запись по id на sql под mysql "select * from table_name where id = 5" - все! Зачем еще какие-то сложности?

А разбиение записей по 20 или 10 на странице с листалкой делайте через kaminari.

Если уж упорно хочется пропускать, то в mysql (в других базах не всегда они есть) есть LIMIT OFFSET но в вашей задачи видно, что вам надо просто понять как пользоваться пэйдженатором.
0
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
09.04.2013, 23:51  [ТС]
Цитата Сообщение от MpaKus Посмотреть сообщение
Выкиньте из головы вообще "номер записи = 3" пользуйтесь ID как все нормальные люди.
На странице по 2 записи, возмем таблицу table.id=[1, 3, 5, 10, 14]. Перешел на вторую страницу и выбрал запись с id = 10(перешел на след. страницу, где можно её радактировать. После редактирования жму кнопку "Сохранить"). Вопрос: так как мне поможет ID вернуться на вторую страницу?

Цитата Сообщение от MpaKus Посмотреть сообщение
Если уж упорно хочется пропускать, то в mysql (в других базах не всегда они есть) есть LIMIT OFFSET но в вашей задачи видно, что вам надо просто понять как пользоваться пэйдженатором.
LIMIT указывает максимальное кол-во записей, которое можно получить, причем тут оно? OFFSET указывает с какой записи считывать данные из таблицы. Так как они мне помогут?

Цитата Сообщение от MpaKus Посмотреть сообщение
Вот получить запись по id на sql под mysql "select * from table_name where id = 5" - все! Зачем еще какие-то сложности?
Ну и получил я запись по id, ну а на какую страницу переходить?
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
10.04.2013, 00:04
ORLY? Вы не можете написать листалку по страницам имея offset и limit? Может ну его это занятие программированием, если такие элементарные основы не даются?

И так, у вас есть 100 элементов в таблице, вы хотите выводить их по 10 штук внизу с листалкой, и после редактирования какого-либо элемента вы хотите возвращаться на страницу с этим элементом.

1. Паджинация.

Ruby
1
2
3
4
def index
  @page = params[:page] || 0 # все понимаем, что в начале это 0, а потом 1-2-3...10 ок?
  @items = Item.find_by_sql( 'SELECT * FROM items LIMIT 10 OFFEST ?', @page) # делаем запрос и выводим
end
теперь на ваш адрес /items/index вы видите список элементов, а внизу делаете свой паджинатор (100 записей / 10 на странице = 10 ссылок вида /items/index?page=1...10

2. Редактирование и возврат
В табличке элементов делаете колонку с ссылкой например
Ruby
1
/items/edit?id=#{item.id}&page=#{@page}
item - это разумеется из item.each do |item|{ ... } цикла вывода таблички

на def edit ... показываете вашу форму, в ее адресе form action="/items/save/?id=#{item.id}&page=#{@page}" можете передать следующему методу ваш page параметр методу save, можете просто в сессию пихнуть например

3. а уже в вашем методе сохранения save вы сохранили Items.save(params[:item]) и сделали редирект опять на ваш
Ruby
1
redirect "/items/index?page=#{params[:page]}"
в итоге после сохранения попадете на вашу страницу элемента

код можно так от балды, прилизать можно везде
0
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
10.04.2013, 00:12  [ТС]
Всё это можно было написать одним предложением! Передавать в форму редактирования номер страницы, с которой перешли, и после передать в метод, в котором обновляется запись в таблице.
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
10.04.2013, 00:19
Я вас не понимаю, вы меня сейчас поучить хотите как вам ответы давать или вы все же спрашиваете и не знаете таких элементарных вещей как пробросить параметры сквозь методы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2013, 00:19
Помогаю со студенческими работами здесь

номер активной записи
как определить порядковый номер записи на которой стоит фокус, заранее благодарен

номер (код) записи
Здравствуйте! Подскажите как сделать что бы код записи шел не порядковым номером а к примеру: 00000001 00000002 00000003 и...

TTable и определенный номер записи
помогите пожалуйста, извините, если тему повторяю - нет времени искать. к делу ... есть table, datasourse и компонент из вкладки...

Порядковый номер записи в выборке
Использую postgresql Есть прекрасная возможность узнать порядковый номер записи в выборке SELECT "Код", ROW_NUMBER()...

Узнать номер записи по id (SQLite)
Привет! Осваиваю SQLite, столкнулся с проблемой. Мне нужно получить номер записи, по id записи... Допустим в таблице...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru