Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование записи в БД, Как програмно скопировать запись в БД 
:(
    Опции темы
Flotskiy
Дата 23.3.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Добрый день всем!
Понадобилась ваша помощь или совет.
Суть: На форме расположено 45 текстовых полей, при помощи которых заносятся данные новой книги в БД Access. Все работает. Но бывает, что приходит новая книга, данные почти все уже внесены, а разница бывает в стоимости или названии издателя. Приходится вносить новую запись. Было-бы хорошо скопировать похожую запись, а потом отредактировать ее.
Я пробовал вот так:
Код

Private Sub Command1_Click()
On Error GoTo sError
Dim dbBibliot As Database
      Set dbBibliot = OpenDatabase(gDataBaseName)
        dbBibliot.Execute "INSERT INTO Titles SELECT * " & _
     " FROM Titles WHERE InventNumber=" & Text2.Text
        MsgBox "Запись скопирована"
sError:
  Dim sError As String
  sError = "Error Number: " & Err.Number & vbCrLf
  sError = sError & Err.Description
  MsgBox (sError)
  
End Sub

и получается вот что:
в таблице есть поле - ID- счетчик, и если неиндексированное то копирование происходит, потом можно редактировать любое поле новой записи, но не поле ID (в которое вставляется значение копируемой записи);
если поле счетчика поставить как индексированное (совпадения не допускаются) - что и нужно в процессе дальнейшей обработки - то копирования не происходит.
Это один способ пытался применить.
А нельзя ли скопировать все поля (45) в буфер обмена, нажать "Новая запись" и вставить все из буфера?
Это второй способ.
Если нельзя ничего сделать, подскажите, не буду ломать голову.
С уважением




--------------------
FlotskiySk k
PM MAIL   Вверх
boevik
Дата 23.3.2005, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Можно, только копировать не в буфер, в переменные (желательно определить структуру) и после загрузки формы заполнить поля.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Flotskiy
Дата 23.3.2005, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



boevik, Привет.
Это как?
Код

Dim txt1
Dim txt2
......
txt1= Text1(0).Text
txt2=Text1(1).Text
...


Примерно так?

--------------------
FlotskiySk k
PM MAIL   Вверх
Akina
Дата 23.3.2005, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



В форме нажатие Ctrl-' приводит к копированию в новую запись контента предыдущей записи.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Flotskiy
Дата 23.3.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Akina, извини, не понял тебя, растолкуй.
--------------------
FlotskiySk k
PM MAIL   Вверх
boevik
Дата 23.3.2005, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Цитата(Flotskiy @ 23.3.2005, 09:44)
Примерно так?

Примерно так.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
cardinal
Дата 23.3.2005, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Flotskiy, тебе вот это надо сделать
Цитата(boevik @ 23.3.2005, 07:31)
желательно определить структуру

по принципу
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=295850
Тогда жизнь станет проще.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Flotskiy
Дата 24.3.2005, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Доброе утро всем!

boevik, по твоей подсказке сделал так:
Код

Option Explicit
Dim txt1 As String 'BBK
Dim txt2 As String ' UDK
Dim txt3 As String ' Avt
Dim txt4 As String ' Soavt
Dim txt5 As String ' PodRed
.........................

Private Sub Command1_Click() ' копирование в переменные
Command1.Visible = False
Command2.Visible = True
txt1 = Text1(0).Text
txt2 = Text1(1).Text
txt3 = Text1(2).Text
txt4 = Text1(3).Text
txt5 = Text1(4).Text
.........................
End Sub

Private Sub Command2_Click() ' вставка значений переменных в текстовые поля.
Command2.Visible = False
Command1.Visible = True
 Text1(0).Text = txt1
 Text1(1).Text = txt2
 Text1(2).Text = txt3
 Text1(3).Text = txt4
 Text1(4).Text = txt5

End Sub


Работает прекрасно, только вопрос: надо обнулять переменные после вставки, что-то
txt1="" ?
С уважением
--------------------
FlotskiySk k
PM MAIL   Вверх
boevik
Дата 24.3.2005, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Flotskiy, или же ручками снова всё прописывать.
Или же замени txt1, txt2, ... на массив и обнуляй в цикле.

К примеру твой код будет выглядить так:
Код

Option Explicit
Dim txt(4) As String 
.........................

Private Sub Command1_Click() ' копирование в переменные
Dim i as integer
Command1.Visible = False
Command2.Visible = True
For i = 0 to 4
   txt(i) = Text1(i).Text
Next i
.........................
End Sub

Private Sub Command2_Click() ' вставка значений переменных в текстовые поля.
Dim i as integer
Command2.Visible = False
Command1.Visible = True
 For i = 0 to 4
   Text1(i).Text = txt(i)
Next i
End Sub


Как сделать обнуление, я думаю ты уже догадываешься.

Regards.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Flotskiy
Дата 24.3.2005, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



boevik, я понял тебя, благодарю всех за помощь.
С уважением
--------------------
FlotskiySk k
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0918 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.