LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  ПЕРЕВОД СТОЛБЦА...
 Re: ПЕРЕВОД СТОЛБЦА В СТРОКУ
 
 01.07.2012 10:23:33
Admin1
731 сообщения
1-ый


Re: ПЕРЕВОД СТОЛБЦА В СТРОКУ

Непонятно почему код приравнивается к разным данным: WHERE [Код]= & Код And [Код]=" & Страна. Логика должна быть более понятной. Если нужно приравнять КодСтраны, то и указывать нужно его, если страна то переменную нужно указать в кавычках. Во внешних функциях, которые используются в запросах должны использоваться переменные типа Variant, т.к. если указать точную переменную Long или String, в случае если в поле будет NULL, то при передаче параметров в функцию произойдет ошибка.

 27.05.2014 15:52:07
epsilon_group
27 сообщения


Re: ПЕРЕВОД СТОЛБЦА В СТРОКУ
На основе примера кода, обсуждаемой в этой теме, подумал сделать универсальную функцию, для перевода значения столбца в строку:

Примечание:

SQL As String - название таблицы, для обработки данных
CriteriaSQl As String - имя столбца в таблице, для обработки данных
CriteriaSQl As String - критерий для отбора данных в столбце в таблицы
TableSQL - имя столбца в таблице, для обработки данных формирования строки
Count - число повторяющихся строк с разными данными

Function gen_Description_by_Any_count(SQL As String, CriteriaSQl As String, Criteria As String, TableSQl As String, Count As Integer)

Dim Recipients As String
Dim i As Integer
Dim Counter As Integer
Dim rstfield As String

Dim rst As Recordset

On Error GoTo 999
Set dbs = CurrentDb

Dim strSQL As String




strSQL = "SELECT " & SQL & ".* FROM " & SQL & " WHERE " & CriteriaSQl & " = '" & Criteria & "'"
Set rst = dbs.OpenRecordset(strSQL)

rst.Requery
Counter = Count

rst.MoveFirst
Recipients = ""
Do
Counter = Counter - 1

rstfield = "rst!" & TableSQl 'Формируем обращение к столбцу Recodset

Recipients = Recipients & "" & rstfield & ";"
rst.MoveNext
Loop Until Counter = 0

rst.Close

gen_Description_by_Any_count = Recipients

Exit Function
999:
MsgBox Err.Description
Err.Clear
End Function

В результате в строку собираются записи по Count ( count = 3) : rst!TableSQl;rst!TableSQl;rst!TableSQl;
т.е. rstfield = "rst!" & TableSQl не воспринимается как источник записей ( Столбец ) из Recodset ( например rst!КодСтраны, где TableSQ это "Страна" ), если в код сразу поставить конструкцию Recipients = Recipients & "" & rst!КодСтраны & ";" то код извлекает значения ячеек столбца "КодСтраны" Возникает вопрос: как передать значение переменной TableSQL - имя столбца в таблице, для обработки данных формирования строки для того чтобы это переменная воспринималась как имя столбца в Recordset ?

С уважением,
Василий
  Программирование  Microsoft Access. Файлы mdb и accdb  ПЕРЕВОД СТОЛБЦА...
ПоискПоиск  Список форумовСписок форумов  
right