Topic: Перенос записей между таблицами

Недавно нашёл скрипт на форуме как переносить запись,в которой всего 1 колонка между таблицами. Вопрос: в моей таблице 3 колонки, и мне нужно переносить их в другую таблицу на этой же форме. Подскажите как это сделать?

Re: Перенос записей между таблицами

Alexandr wrote:

Недавно нашёл скрипт на форуме как переносить запись,в которой всего 1 колонка между таблицами. Вопрос: в моей таблице 3 колонки, и мне нужно переносить их в другую таблицу на этой же форме. Подскажите как это сделать?

тоже самое, только добавьте Ваши поля

Re: Перенос записей между таблицами

Пробовал так сделать, но мне выдает ошибку 1 values for 3 columns......я впринципе понимаю что она означает, но как ее исправить не пойму...

Re: Перенос записей между таблицами

Вот собственно код...

Post's attachments

Attachment icon изображение_2022-08-24_231338954.png 51.63 kb, 48 downloads since 2022-08-24 

Re: Перенос записей между таблицами

Alexandr wrote:

Вот собственно код...

аа это мой код
дайте ссылку на тему а то я уже и забыл где она

Re: Перенос записей между таблицами

Если бы я помнил,где этот топик..) попробую найти

Re: Перенос записей между таблицами

Я могу позже прикрепить ваш пример с того топика,у меня он ещё остался,если хотите

8 (edited by k245 2022-08-25 05:56:28)

Re: Перенос записей между таблицами

Alexandr wrote:

Пробовал так сделать, но мне выдает ошибку 1 values for 3 columns......я впринципе понимаю что она означает, но как ее исправить не пойму...


Ошибка означает, что в запросе в секции полей указаны три поля, а в секции значений имеется только одно значение. Должно быть три. То есть ваш SQL-запрос неверный.

Визуальное программирование: блог и телеграм-канал.

Re: Перенос записей между таблицами

Вроде разобрался как перенести все 3 колонки из одной таблицы в другую,но теперь проблема с values. Отрывок из кода:

SQLExecute ( INSERT INTO Roster (Nick,GS,Role) VALUES ("Nick","GS","Role")');

При таком раскладе строки переносится со значениями которые в кавычках,даже если значения другие. Как сделать так чтобы в values поставлялись значения выделенной строки именно те,которые записаны в таблице?

10 (edited by pavlenko.vladimir.v 2022-08-25 09:54:22)

Re: Перенос записей между таблицами

Alexandr wrote:

Вроде разобрался как перенести все 3 колонки из одной таблицы в другую,но теперь проблема с values. Отрывок из кода:

SQLExecute ( INSERT INTO Roster (Nick,GS,Role) VALUES ("Nick","GS","Role")');

При таком раскладе строки переносится со значениями которые в кавычках,даже если значения другие. Как сделать так чтобы в values поставлялись значения выделенной строки именно те,которые записаны в таблице?

SQLExecute (' INSERT INTO Roster (Nick,GS,Role) VALUES ("'+Nick+'","'+GS+'","'+Role+'")');
это Конкатенация (склевание строк)
Nick - это переменная с строкой (string)
то что находится в скобках SQLExecute () - это строка
строка пишется в приделах ' '
что бы соединить ' строка' переменная - нужен символ склеивания строк +, получается так :  'строка'+переменная_со_строковым_значением
и тд..
переменная всегда находиться за приделами ' '

Re: Перенос записей между таблицами

pavlenko.vladimir.v wrote:
Alexandr wrote:

Вроде разобрался как перенести все 3 колонки из одной таблицы в другую,но теперь проблема с values. Отрывок из кода:

SQLExecute ( INSERT INTO Roster (Nick,GS,Role) VALUES ("Nick","GS","Role")');

При таком раскладе строки переносится со значениями которые в кавычках,даже если значения другие. Как сделать так чтобы в values поставлялись значения выделенной строки именно те,которые записаны в таблице?

SQLExecute (' INSERT INTO Roster (Nick,GS,Role) VALUES ("'+Nick+'","'+GS+'","'+Role+'")');
это Конкатенация (склевание строк)
Nick - это переменная с строкой (string)
то что находится в скобках SQLExecute () - это строка
строка пишется в приделах ' '
что бы соединить ' строка' переменная - нужен символ склеивания строк +, получается так :  'строка'+переменная_со_строковым_значением
и тд..
переменная всегда находиться за приделами ' '

Выдал ошибку Undeclared identifier: 'Nick' at 18:66

12 (edited by pavlenko.vladimir.v 2022-08-25 10:05:28)

Re: Перенос записей между таблицами

Alexandr wrote:

Выдал ошибку Undeclared identifier: 'Nick' at 18:66

Вы не объявили переменную
----------------------------------------------------------------
локальная переменная объявляется в пределах процедуры
procedure name (sender)
var
Nick: string;
begin
end
такая переменная работает только в пределах самой процедуры
--------------------------------------------------------------------
глобальная переменная
объявляется в начале всего листинга кода
var
Nick: string;
может вызываться любой процедурой
--------------------------------------------------------------------
переменные объявляются после слова var

Re: Перенос записей между таблицами

Объявил переменные Nick, GS, Role.. теперь при переносе переносится пустая строка....

Re: Перенос записей между таблицами

Alexandr wrote:

Объявил переменные Nick, GS, Role.. теперь при переносе переносится пустая строка....

прикрепите Ваш проект

Re: Перенос записей между таблицами

pavlenko.vladimir.v wrote:
Alexandr wrote:

Объявил переменные Nick, GS, Role.. теперь при переносе переносится пустая строка....

прикрепите Ваш проект

В данный момент на работе, возможности пока нет. Вечером обязательно скину.

Re: Перенос записей между таблицами

pavlenko.vladimir.v wrote:
Alexandr wrote:

Объявил переменные Nick, GS, Role.. теперь при переносе переносится пустая строка....

прикрепите Ваш проект

Прикладываю проект..

Post's attachments

Attachment icon SPL.zip 1.57 mb, 123 downloads since 2022-08-25 

17 (edited by pavlenko.vladimir.v 2022-08-25 16:18:53)

Re: Перенос записей между таблицами

Alexandr wrote:

Прикладываю проект..

Так у Вас переменные не заполнены

создать запись - SQLExecute ('INSERT INTO GroupOne(Nick,GS,Role)VALUES("'+Nick+'","'+GS+'","'+Role+'")');

получить данные - SQLExecute ('SELECT Nick,GS,Role FROM Roster WHERE id='+ IntToStr(Form1.TableGrid3.Row[i].ID) );

удалить все поля с таким-то идентификатором - SQLExecute ('DELETE FROM Roster WHERE id='+IntToStr(Form1.TableGrid3.Row[i].ID));
//С начало получаем данные и присваиваем их переменным
Nick := SQLExecute ('SELECT Nick FROM GroupOne WHERE id='+ IntToStr(Form1.TableGrid4.Row[i].ID) );
GS := SQLExecute ('SELECT GS FROM GroupOne WHERE id='+ IntToStr(Form1.TableGrid4.Row[i].ID) );
Role := SQLExecute ('SELECT Role FROM GroupOne WHERE id='+ IntToStr(Form1.TableGrid4.Row[i].ID) );
//потом записываем 
SQLExecute ('INSERT INTO Roster(Nick,GS,Role)VALUES("'+Nick+'","'+GS+'","'+Role+'")');
// теперь удаляем 
SQLExecute ('DELETE FROM GroupOne WHERE id='+IntToStr(Form1.TableGrid4.Row[i].ID));

саму программу Вам все равно писать придется самому, так логика известна только вам

Re: Перенос записей между таблицами

Да мне хотя бы с одной таблицей помочь, остальные я сам сделаю..Хорошо,спасибо за наводку!