|
|
|
| Значит такое задание (надо написать модуль в Access):
1)есть таблица (например "ааа") 3х5 (3 строки по 5 полей)
2) необходимо сравнить содержимое 1х1 и 2х1, если равны------- добавить значения 2х2,2х3,2х4,2х5 в 1х2,1х3,1х4,1х5, а потом 2 строку удалить.
3)все ето нада в цикле ,чтобы проверяло всю таблицу
Сорри за такой вопрос, но я только недавно начал изучать Access и VBA.
Если можно хоть какието примеры или ссылки на ресурсы где ето можно глянуть..... | |
|
| |
|
|
|
| ваша задача не типична для реляционных БД.
Возможно Выне верно создали структуру БД. | |
|
| |
|
|
|
| это, поди, курсовик ИМХО (допустим на скорую руку)
ЗАДАНИЕ:
дано таблица tblData
Column1
Column2
,,,
Column5
|
таблица содержит три записи, нас волнуют значения в Column1 каждой из записей
нужно сравнить значение двух соседних записей на равенство по первому полю (Column1)
если значения Column1 двух соседних записей равны
добавить в одну из записей (в данном случае по ТЗ правого плеча равенства)
значения всех (кроме первого) полей записи левого плеча равенства, соответственно
и одну из этих записей удалить (про третью запись в ТЗ вообще ничего не сказано)
предположим три возможных варианта по несколько комбинаций
1) все значения в Column1 в соседних записях не равны
1а) <a-b-c>
1б) <a-c-a>
|
2 все значения column1 во всех записях равны
2а) <a-a-a>
|
3) какие-то два значения в соседних записях равны
3а) <a-a-c>
3б) <b-a-a>
|
_________________________________
ДОПУЩЕНИЯ:
ИМХО можно предположить что в случае трех записей в таблице мы спокойно можем
отбирать записи по First и Last, поскольку предполагаем что:
А) все минимально необходимые для решения данные приведены в условии
Б) First<Middle<Last OR First>Middle>Last (при 3-х записях фиолетово)
В) задача имеет смысл и, вероятно, решение (или может иметь решение)
задача сводится к сравнению "трех разноцветных кошек сидящих на скамейке в ряд"
_________________________________
ТЕХ. ЗАДАНИЕ:
приводя задачу к нормальному виду
нужно удалить некоторую одну запись в таблице, предыдущую той, значения Column1
которой совпадает со значением Column1 той, что должна быть из таблицы удалена
или
из трех кошек сидящих в ряд, нужно выкинуть одну кошку сидящую слева от той с которой она
одинакового окраса и никого не волнует какого цвета у нее глаза или какой она носит бантик
выкрики на тему: -"а как же с переносом значений (часть 2 п. 2 ТЗ)" оставим на совести вопиющих
в такой формулировке задача не представляет никакой сложности - на слабую 3-ку по информатике
_________________________________
АКСИОМА:
если любое из допущений покажется автору вопроса слишком смелым
он отправляется убивать себя ап стену (as Variant учить олбанский)
_________________________________
РЕШЕНИЕ:
1а); 1б) все кошки тупо курят или идут по домам
2а); 3а) первая кошка вылетает в трубу
зб) вторая кошка вылетает в трубу
ПРИМЕЧАНИЕ:
остальное комбинаторика - типо "равнение налево" (для кошек)
вопрос только в том, сколько сравнений нужно произвести
вылетает только одна кошка (про третью ничего не сказано в ТЗ)
во всех случаях третья кошка вообще и не думает напрягаться
перекрашивать кошек в другой цвет нет ровно никакого смысла
ЗЫ
счет ведется слева направо, кошки сидят к нам лицом :)
_________________________________
ДИСКЛАЙМЕР:
последовательность приведенных допущений не существенна
Осмору респект за терпение и извинения за нетерпимость | |
|
| |
|
|
|
| нет ето не курсовик, а реально действующая база. вся мдб-шка весит 200 мб потому немогу выложить
Немного перефразирую
таблица типа
код Параметр 1 Параметр 2 Параметр 3
111 123 234 345
111 123 235 346
112 123 236 347
1) сравниваем по полю (код)
2) если одинаковые то :
код Параметр 1 Параметр 2 Параметр 3
111 123 123 234 235 345 346
112 123 236 347
2.1)если нет то: проверить следующие поле и т.д
Плиз, хотябы варианты реального кода, где рыть | |
|
| |
|
|
|
| >Плиз, хотябы варианты реального кода, где рыть
опиши задачу в терминах предметной области, а рыть тебе в сторону формализации задачи.
ты что-то совсем косое затеял - тут Osmor прав | |
|
| |
|
|
|
| весит 200 мб потому немогу выложить | |
|
| |
|
|
|
| Ну очень большая база, 426000 строк в таблице, 42 поля
В ней есть строки в которых первое поле имеет значение которое повторяються , задача в том чтобы
всех полей всех строк у которых значение первой строки одинаковое в одну строку....... | |
|
| |
|
|
|
| кривое ТЗ неохота возиться... тем более 42 поля непонятного типа и неизвестной длины... слишком много неясностей -
на таком количестве записей как много может быть дублирующихся значений в первом поле?
какой длины может получиться результат?
через какой разделитель соединять подхваченные из таблицы значения?
что делать с пропущенными значениями (Null)?
и самое главное - что потом со всем этим делать? :)
копаться для того, чтобы выяснить что ты сам не знаешь чего хотел? уже сейчас поменялась формулировка и суть задачи...
в общем случае ГетСтринг тебе в руки
Function GetAsString(GroupBy As String) As String
Dim rst As New ADODB.Recordset
Dim strSQL As String
strSQL = "Select * From MSysObjects where Type = " & GroupBy & ";"
rst.Open strSQL, CurrentProject.Connection
GetAsString = rst.GetString
rst.Close
Set rst = Nothing
End Function
|
| |
|
| |
|
|
|
| если я правильно понял
Надо создать запрос поиск повторений для поля 1.
Потом удалить лишние строки, добавляя из этих лишних - значения в поля, остающихся записей.
Так? или не так? | |
|
| |
|
|
|
| Так
Мне стыдно за свое нубство | |
|
| |
|
|
|
| давайте так.
создайте копию БД
удалите все кроме нужной таблицы в ней оставьте 20-100 строк наиболее показательных.
Создатей таблицу которая должна получиться в результате
впишите в нее данные которые должны получится.
типа Есть - надо.
Кладите этот MDB сюда или на Slil.ru | |
|
| |
|
|
21 Кб. |
|
| АААААААААААААААААААА
ну ты прям как я задаешь вопросы
не поймешь чё хошь.
Так бы сразу и сказал.
надо все данные об одном больном- объединить в одну строку?
Да?
тада вот так............... | |
|
| |
|
26 Кб. |
|
| И вот концовочка.......... | |
|
| |
|
|
|
| В принципе да,
Только мне нада модуль к асесу ,
Еще бы небольшой хелп..... | |
|
| |
|
30 Кб. |
|
| В общем виде решение может быть таким
1-й запрос на создание ноыой таблицы с таким же набором полей, и записями с уникальным ключем из исходной таблицы:
SELECT Есть.[Код больного], First(Есть.[Дата рождения]) AS [Дата рождения], First(Есть.[Дата обследования]) AS [Дата обследования], Null AS [UnionОбъем правой доли], Null AS [UnionОбъем левой доли], Null AS UnionПерешеек, Null AS [UnionУзловые образования], Null AS UnionДлина, Null AS UnionШирина, Null AS UnionЛокализация INTO Новая
FROM Есть
GROUP BY Есть.[Код больного];
|
Второй запрос который заполнит таблицу созданную запросом один данными из разных записей с одинаковым ключем:
UPDATE Новая INNER JOIN Есть ON Новая.[Код больного]=Есть.[Код больного] SET Новая.[UnionОбъем правой доли] = ([UnionОбъем правой доли]+", ") & [Объем правой доли], Новая.[UnionОбъем левой доли] = ([UnionОбъем левой доли]+", ") & [Объем левой доли], Новая.UnionПерешеек = ([UnionПерешеек]+", ") & [Перешеек], Новая.[UnionУзловые образования] = ([UnionУзловые образования]+", ") & [Узловые образования], Новая.UnionДлина = ([UnionДлина]+", ") & [Длина], Новая.UnionШирина = ([UnionШирина]+", ") & [Ширина], Новая.UnionЛокализация = ([UnionЛокализация]+", ") & [Локализация];
|
После запуска обеих запросов получим таблицу в нужными данными
ПРимер см. в аттаче
теорию можно почитать тут
http://hiprog.com/index.php?option=com_content&task=view&id=334&Itemid=35
я использовал метод 3 | |
|
| |
|