![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
![]() чего то я не фига в его коде не понял, может проще бд через другую прогу создать всё-таки? |
#17
|
|||
|
|||
![]() Цитата:
Я ж сказал - поищи и почитай. Там как-то хитро народ условие пишет, что она возвращает число записей перед текущей. А вообще, я не совсем понимаю, зачем тут БД. У тебя же явно записей с десяток. Можно и в памяти все самому сделать. а можно просто получить выборку, скопировать ее куда-нить с простановкой буковок походу. Например, в какой-ниь TMemDataSet. только копировать тогда надо в цикле, используя счетчик. Типа такого: Код:
ADOQuery.SQL.Text := '...'; ADOQuery.Open; // выполнили запрос, получили данные. ADOQuery.First; MemDataSet.Clear; Cnt := 1; While Not ADOQuery.EOF Do begin MemDataSet.AppendRecord([ADOQuery.Fields[0].Value, ADOQuery.Fields[1].Value,ADOQuery.Fields[2].Value,Chr(Ord('a')-1+Cnt)]); Inc(Cnt); ADOQUery.Next; end; |
#18
|
|||
|
|||
![]() Цитата:
|
#19
|
|||
|
|||
![]() lmikle а я тут подумал еще, у меня получается столбец с результатом поле3-поле4 выводится по нажатию на кнопку, а можно как то этот столбец програмно скопировать и перенести скажем в таблицу, в которой строки будут проиндексированы, или как это называется. и уже взяв значения из этой таблицы присвоить каждому букву.
|
#20
|
|||
|
|||
![]() Можно. INSERT from SELECT называется.
Создай таблицу с автоинкрементным полем. Сначала чистишь таблицу, потом сбрасываешь счетчик автоинкрементного поля на ней и вставляешь в нее все, что выбирает твой запрос. Ну в дальше конвертировать счетчик в букву уже просто через CHR. |
#21
|
|||
|
|||
![]() Цитата:
|
#22
|
|||
|
|||
![]() chr - возвращает символ, соответсвующий переданному ей цифровому номеру. для ASCII, например, chr(65) вернет A.
|
#23
|
||||
|
||||
![]() А разобраться как работает мой запрос так и не хватило сил? А ведь он все вам без дополнительных табличек возвращает
![]() Ну вот вам адаптированный под вашу таблицу запрос: Код:
select Т1.Поле1 as Дисциплина, Т1.Поле2 as Действие, Chr(count(1)+64), Т1.Поле3 as [Первое слагаемое], Т1.Поле4 as [Второе слагаемое], Т1.Поле3 + Т1.Поле4 as Сумма from Таблица1 as Т1 inner join Таблица1 as Т2 on Т1.id >= Т2.id group by Т1.Поле1, Т1.Поле2,Т1.Поле3,Т1.Поле4 having Т1.Поле1 = 'Математика' and Т1.Поле2 = 'Сложение' Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 16.12.2015 в 22:35. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
ЧайниКсНосикоМ (18.12.2015)
|
#24
|
|||
|
|||
![]() Цитата:
[Ошибка] unit1.pas (38): Строковые литералы может иметь не более 255 элементов вот в этой строке Код:
qry1.SQL.Add('SELECT T1.[поле1], T1.[поле2],Chr(count(1)+64), T1.[поле3] as [Первое слогаемое], T1.[поле4] as [Второе слогаемое], T1.[поле3]+T1.[поле4] AS summa FROM [таблица1] as T2 on T1.id>T2.id group by T1.[поле1], T1.[поле2], T1.[поле3], T1.[поле4] having [поле1]=:p1 AND [поле2]=:p2'); |
#25
|
|||
|
|||
![]() Ну разбей на несколько строк, хотя и странно это все, AnsiString до 2 Гб:
Код:
qry1.SQL.Clear; qry1.SQL.Add('SELECT T1.[поле1], T1.[поле2],Chr(count(1)+64), T1.[поле3] as [Первое слогаемое], T1.[поле4] as [Второе слогаемое], T1.[поле3]+T1.[поле4] AS summa'); qry1.SQL.Add('FROM [таблица1] as T2 on T1.id>T2.id group by T1.[поле1], T1.[поле2], T1.[поле3], T1.[поле4]'); qry1.SQL.Add('having [поле1]=:p1 AND [поле2]=:p2'); |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
ЧайниКсНосикоМ (18.12.2015)
|
#26
|
||||
|
||||
![]() И позвольте поинтересоваться, куда подевалась инструкция inner join из моего примера?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#27
|
|||
|
|||
![]() Цитата:
|
#28
|
|||
|
|||
![]() Цитата:
Код:
begin qry1.Close; qry1.SQL.Clear; qry1.SQL.Add('SELECT T1.[pole1], T1.[pole2],Chr(count(1)+64), T1.[pole3] as [Первое слагаемое], T1.[pole4] as [Второе слагаемое], T1.[pole3]+T1.[pole4] AS summa'); qry1.SQL.Add(' FROM [tablitsa1] as T1 inner join [tablitsa1] as T2 on T1.id>T2.id group by T1.[pole1], T1.[pole2], T1.[pole3], T1.[pole4]'); qry1.SQL.Add(' having T1.[pole1]=:p1 AND T1.[pole2]=:p2'); qry1.Parameters.ParamByName('p1').Value := edt1.text; qry1.Parameters.ParamByName('p2').Value := edt2.text; qry1.Open; end; |
#29
|
||||
|
||||
![]() Не вижу ошибки. Вроде все верно. Попробуйте без параметров р1 и р2 пока, задать ограничение константой.
А в табличке у вас есть поле [id] ? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#30
|
|||
|
|||
![]() ADO? Зайди в дизайнер и создай параметры. Что-то ADO не очень хорошо разбирает параметры из запроса, сталкивался с этим.
|