Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 62

как использовать Цикл в Запросе sql

11.11.2010, 10:01. Показов 3794. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пользователь водит в поле Edit1.Text желаемое кол-во столбцов в таблице бд mssql.
Вопрос: как сделать чтоб создавалась таблица с количеством столбцов указанным пользователем?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TFMain.CreateSQLTable(Sender: TObject);
begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:='CREATE TABLE"'+FMain.Caption+'"('+
    '[1] [float] NULL , '+
    '[2] [float] NULL , '+
    .
    .
    .
    '[200] [float] NULL , '+ //200 - Edit1.Text 
    ') ON [PRIMARY]';
try
ADOQuery1.ExecSQL;
except
ShowMessage('текст');
end;
ADOQuery1.Connection.Close;
end;
Понимаю, что нужно использовать цикл:
Delphi
1
for i:=0 to StrToInt(Edit1.Text) do
,но не понимаю, куда в коде и как (путаница с " и ') поместить цикл в код?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2010, 10:01
Ответы с готовыми решениями:

Как использовать boolean в sql запросе?
Доброе время суток! Создаю БД (использую access). У меня возникают проблемы во время отбора из таблицы записей, критерий отбора - в...

Как использовать конструкцию Если в запросе (SQL)
Есть такой запрос: (в смысле его код) SELECT * FROM WHERE ((( . BETWEEN () AND ()))); ======================= Мне нужно...

Как использовать константу вместо переменной в SQL запросе?
IF EXISTS(select * from tempdb..sysobjects where id = object_id('tempdb..#select1')) DROP TABLE #select1; SET TRANSACTION...

8
36 / 35 / 3
Регистрация: 12.06.2009
Сообщений: 211
11.11.2010, 11:40
Суть путаницы не понял...делай так:

(пишу от руки!)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='CREATE TABLE"'+FMain.Caption+'"(';
   for a:=1 to strtoint(Edit1.text) do
   begin
ADOQuery1.SQL.add('blablabla+"'edit2.text+'"');
   end;
ADOQuery1.SQL.add(')');
try
ADOQuery1.ExecSQL;
except
ShowMessage('текст');
end;
ADOQuery1.Connection.Close;
1
1 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 62
11.11.2010, 12:27
Суть путаницы в " и '.
Не могу понят, гдеж я с ковычками напутал!(
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TFMain.CreateSQLTable(Sender: TObject);
var
i:integer;
begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:='CREATE TABLE"'+FMain.Caption+'"(''[dt] [smalldatetime] NULL ,';
   for i:=0 to 5 do
   begin
    ADOQuery1.SQL.Add('"'+'[i] [float] NULL ,'+'"');
   end;
    ADOQuery1.SQL.Add(') ON [PRIMARY]');
try
ADOQuery1.ExecSQL;
except
ShowMessage('текст');
end;
ADOQuery1.Connection.Close;
end;
ругается так:
Миниатюры
как использовать Цикл в Запросе sql  
0
36 / 35 / 3
Регистрация: 12.06.2009
Сообщений: 211
11.11.2010, 12:38
не знаю точно как в АДО,но в нормальных SQL запросах это выглядит так:
SQL
1
2
3
4
5
6
7
CREATE TABLE TABLE_NAME
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)
Пример:
SQL
1
2
3
4
5
6
7
8
CREATE TABLE Persons
(
P_Id INT,
LastName VARCHAR(255),
FirstName VARCHAR(255),
Address VARCHAR(255),
City VARCHAR(255)
)
З.Ы. хоть у вас ошибка и выше этой строчки,но на будущее:

в
Delphi
1
'"'+'[i] [float] NULL ,'+'"'
у вас ошибка и переменная 'i' у вас является не переменной ,а просто буквой ! сделайте так:
Delphi
1
'+inttostr(i)+' [float] NULL
1
1 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 62
11.11.2010, 12:51
Этот код корректно создаёт таблицу:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TFMain.CreateSQLTable(Sender: TObject);
begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:='CREATE TABLE"'+FMain.Caption+'"('+
    '[1] [float] NULL , '+
    '[2] [float] NULL , '+
    '[3] [float] NULL , '+ 
    ') ON [PRIMARY]';
try
ADOQuery1.ExecSQL;
except
ShowMessage('текст');
end;
ADOQuery1.Connection.Close;
end;
Почти уверен, что гдето просто кавычка иль запитая лишние или не там стоят
Где? вот в чём вопрос?
0
36 / 35 / 3
Регистрация: 12.06.2009
Сообщений: 211
11.11.2010, 12:54
ну ты ошибку-то прочитай... "незакрытые кавычки в конце символьной строки" .... и пишет первую же строчку ...
0
1 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 62
11.11.2010, 12:56
у вас ошибка и переменная 'i' у вас является не переменной ,а просто буквой ! сделайте так:
Эт да..., упустил. Спс.
0
36 / 35 / 3
Регистрация: 12.06.2009
Сообщений: 211
11.11.2010, 12:57
P/S/ и всё-таки попробуй тем способом,который описал я,он тоже рабочий..(по мнению Гугла )

пример..

Use SQL statements and ADO to create a database table from within Visual Basic 6
cmd.CommandText = "CREATE TABLE Customer (CustomerID Char(6) PRIMARY KEY, Name
Char(20), Address Char(30), City Char(30), State Char(2), PostalCode Char(9))"
cmd.Execute , , adCmdText
1
1 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 62
11.11.2010, 13:25
Уфф..., заработало!
Эти "запят-ковычи" , когда их много путаюсь.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TFMain.CreateSQLTable(Sender: TObject);
var
i:integer;
begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:='CREATE TABLE"'+FMain.Caption+'"([dt] [smalldatetime] NULL ,';
   for i:=0 to StrToInt(EVarNum.Text) do
   begin
    ADOQuery1.SQL.Add(''+'['+inttostr(i)+'] [float] NULL ,'+'');
   end;
    ADOQuery1.SQL.Add(') ON [PRIMARY]');
try
ADOQuery1.ExecSQL;
except
ShowMessage('Îøèáêà ñîçäàíèÿ òàáëèöû "'+FMain.Caption+'", èëè'+#13+#10+
'òàêàÿ òàáëèöà óæå ñóùåñòâóåò.');
end;
ADOQuery1.Connection.Close;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2010, 13:25
Помогаю со студенческими работами здесь

Как параметр в SQL-запросе можно использовать в строковом типе данных?
Добрый день. Подскажите, как параметр в SQL-запросе можно использовать в строковом типе данных? Я имею ввиду что-то такое: string...

Использовать цикл в запросе
У меня есть запрос, в котором я должен записать в таблицу Mark информации, но у меня данные не статические, а заполняются в зависимости...

Использовать свой метод в SQL запросе
Здравствуйте, имеется некий метод который мне необходимо использовать в запросе типа: UPDATE Table_1 SET Field_1 = MyMethod(Field_1); ...

Можно ли использовать в SQL запросе кириллицу
Доброго всем времени суток. Есть скрипт который выбирает данные из одной базы данных, затем второй похожий скрипт должен выбрать из другой...

Можно ли создать в SQL-запросе цикл с переменной
Всем привет, подскажите можно ли вообще создать в sql-запросе цикл с переменной, именно в phpmyadmin?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru