|
|
|
| доброго времени суток.
сижу 2-ы сутки и туплю. помогите выйти из ступора
есть таблица
код; ФИО;действие;код2 и другие столбцы
поле код - последовательный счетчик
код2 - индексируемое поле не имеющие совпадения.
при добавлении новой записи в поле код2 записывается значение из поля код той строки , которое удовлетворяет определенному условию. это я сделал здесь вопросов нет.
теперь мне в этой строке необходимо изменить значение поля код2. значение равно полю код новой вставленной строки. вот вопрос как это сделать.
пытаюсь сделать это через
update таблица set код2=(значение) where код=(условию оно мне известно всегда)
, но не знаю как считать поле код новой строки и передать его в "значение".
считать поле код новой строки пытаюсь через
select код from таблица where код2=(условию оно мне известно всегда)
но не знаю как воспользоваться результатом
пытался сделать подзапросом, но понял что я не прав
update таблица set код2=(select код from таблица where kod2=(условию оно мне известно всегда)) where код=(условию оно мне известно всегда)
выскочила ошибка "запрос должен быть обновляемым"
способ просто тупо считать последнее значение не рассматриваю, так как может быть одновременное добавление записи двумя пользователями и как следствие ошибка. | |
|
| |
|
|
|
| Че-то напутано зело. Если есть код - счетчик, то зачем код2??? если меняешь код2, а это индексирванное без повторений поле, то на что его менять можно так, что бы использовать соответствующее поле код???
при добавлении новой записи в поле код2 записывается значение из поля код той строки , которое удовлетворяет определенному условию.
А куда заносится значение поля код? Можно схему глянуть, иначе ниче не понятно.
1. Во всех случаях попробуй сделать через подчиненную форму со связанными полями по полю код.
2. Попробуй сделать через программный код типа: me.Поле...=me.полекод. на событие после обновления поля код2
3. Попробуй объяви переменную и значение назначь переменной, потом фокус в нужное поле и выплюнь в него значение переменной
4. Запросом на обновление: docmd.runsql "update.......;",-1 где будет фигурировать нужное условие. | |
|
| |
|
|
|
| Постараюсь объяснить , что я хочу. только сильно не пинайте.
в данной таблице есть еще одно поле телефон.
и в эту таблицу предполагается вносить данные по выдачи и сдачи телефона тем или иным сотрудником.
т.е.
когда сотрудник получает сим карту, то вносится следующая запись
код; ФИО ; Телефон; действие;код2
1 ; krusz; 111111 ; выдача ;
и т.д.
.....
т.е. поле код2 изначально пусто.
далее сотрудник сдает сим карту и вносится следующая строка допустим счетчик уже дошел до 100
код ; ФИО ; Телефон; действие;код2
100 ;krusz :111111 ; сдача ; 1
т.е. в поле код2 я вношу значение кода строки в которой записано , что номер выдан данному сотруднику. с получением этого кода нет проблемы, я его получаю из формы. далее я хочу обновит поле код2 первой строки и внести в него код строки сдачи номера. но вот как этот код считать и присвоить его переменной, что бы его потом через update засунуть в нужную строку я затрудняюсь.
ну а вношу коды в поле2, для того что бы однозначно "связать" данные строки
т.е. если пустое поле то телефон не сдан. если в поле есть значение, то можно найти строку по которой был выдан/сдан телефон.
как то вот так | |
|
| |
|
|
|
| Надо как то вот так
1 таблица ТЕЛЕФОНЫ (Данные о телефоне)
2 таблица ИСТОРИЯ (Данные о выдаче\приёме телефона)
Связь таблиц - один телефон ко многим записям в таблице история (Поле код_Телефона)
ИХМО ИМхо
========================
А ещё лучше просто опишите какие данные надо хранить в базе данных и какие сведеия из неё просматривать - может решение очень простое и алгоритм то же. | |
|
| |
|
|
|
| Прислушайся к часу
еще в подчиненной таблице сделать поле сдача телефона и запретить его повторную выдачу, если это поле строкой выше пустое. Тогда повторной выдачи случайно не будет. | |
|
| |
|
|
|
| час, гоблин, не поверите , но оно так и есть.
есть таблица телефон , есть таблица сотрудник и есть таблица история. таблицы связаны через поля код_телефон и код_сотрудники.
в таблицу история я и вношу действия с телефоном кому и когда выдано (т.е. есть еще одно поле дата выдачи/сдпачи). так же в этой же таблице есть еще поля пользователь и поле дата внесения записи. фиксирую кто из пользоавателей сделал запись. (здесь я понимаю, что можно сделать через логи, но я пока боюсь в это ввязываться. хотя мне даже на этом форуме (по моему даже час) и объяснял как это сделать через классы. но что-то пока боязно).
так же изначально я хотел сделать еще одно поле сдачи и фиксировать сдачу в этом поле, но почему то решение заносить сдачу и выдачу телефона отдельными строками мне показалось интереснее и удобнее.
кстати просто вопрос на который не могу найти ответ. а можно как то присвоить переменной значение из определенной таблицы? программно не используя форму? скажем как нибудь через SQL и select? ну или каким нибудь другим способом? | |
|
| |
|
|
|
| >> решение заносить сдачу и выдачу телефона отдельными строками мне показалось интереснее и удобнее.
топикстартер молодец. | |
|
| |
|
|
|
| попробуте вот это
'Переменная =DLookup("[Телефон]"; "[Клиенты]"; "[КодКлиента] = " & 3 )
'
'Критерием для выбора записи из таблицы "Клиенты" является номер кода(код) .
'
|
http://office.microsoft.com/ru-ru/access-help/HA001228825.aspx
|
| |
|
| |
|
|
|
| огромное спасибо, как раз это я и искал
все получилось | |
|
| |