Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2015, 10:42   #1
Agusha3
 
Регистрация: 28.02.2015
Сообщений: 7
По умолчанию Записать значение переменной в БД

Всем доброе утро, хочу записать значение переменной в базу данных:

ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.add('INSERT INTO test (NEdr) VALUES (''Q'')');
ADOQuery2.ExecSQL;

В итоге, либо в БД записывается переменная Q, а не ее значение, либо, если убрать кавычки выводится ошибка: "Ошибка синтаксиса конструкции INSERT INTO", либо ошибка, что переменная не имеет значения пол умолчанию. Q имеет тип String, в а бд fstring. Очень надеюсь на вашу помощь.
Agusha3 вне форума Ответить с цитированием
Старый 28.02.2015, 10:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
with ADOQuery2 do begin
 SQL.Text:='INSERT INTO test (NEdr) VALUES (:Q)';
 Parameters.ParamByName('Q').Value:=Чего-то там;
 if ExecSQL<>0 then Записано успешно;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.02.2015, 11:29   #3
Agusha3
 
Регистрация: 28.02.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
with ADOQuery2 do begin
 SQL.Text:='INSERT INTO test (NEdr) VALUES (:Q)';
 Parameters.ParamByName('Q').Value:=Чего-то там;
 if ExecSQL<>0 then Записано успешно;
end;
Спасибо за ответ, у меня вот такая конструкция получилась:
Код:
ah:= 1;
i:=0;
Rows := Exel.ActiveSheet.UsedRange.Rows.Count;
For i:= 0 to Rows do begin
ah:=ah+1;
s1 := Exel.Cells[ah, 1].Text;


ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Text:=('INSERT INTO test (NEdr) VALUES (:s1)');
ADOQuery2.Parameters.ParamByName('s1').Value := s1;
ADOQuery2.ExecSQL;
У меня происходит поячеечное считывание из эксель файла, передавание значение ячейки в переменную и запись переменной в бд. Но почему то записывается только половина получившихся переменных.
Agusha3 вне форума Ответить с цитированием
Старый 28.02.2015, 11:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых:
Код:
ah:= 1;
i:=0;
Rows := Exel.ActiveSheet.UsedRange.Rows.Count;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Text:=('INSERT INTO test (NEdr) VALUES (:s1)');
For i:= 0 to Rows do begin 
 ah:=ah+1;
 s1 := Exel.Cells[ah, 1].Text;
 ADOQuery2.Parameters.ParamByName('s1').Value := s1;
 ADOQuery2.ExecSQL;
end;
Во-вторых: А зачем тебе понадобилось переносить данные в базу из экзеля?
И что за СУБД у тебя?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.02.2015, 11:56   #5
Agusha3
 
Регистрация: 28.02.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Во-первых:
Код:
ah:= 1;
i:=0;
Rows := Exel.ActiveSheet.UsedRange.Rows.Count;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Text:=('INSERT INTO test (NEdr) VALUES (:s1)');
For i:= 0 to Rows do begin 
 ah:=ah+1;
 s1 := Exel.Cells[ah, 1].Text;
 ADOQuery2.Parameters.ParamByName('s1').Value := s1;
 ADOQuery2.ExecSQL;
end;
Во-вторых: А зачем тебе понадобилось переносить данные в базу из экзеля?
И что за СУБД у тебя?
Это не мне, это задание такое. Нужно перенести все значения из экселя в DBF(с помощью делфи). А я не придумал способ лучше, чем тот, который представлен выше.

Если исправить код, как написали Вы, то все равно в бд записывается только 12 значений. А цикл состоит из 400 повторений. П.С. Спасибо)

Последний раз редактировалось Stilet; 28.02.2015 в 13:10.
Agusha3 вне форума Ответить с цитированием
Старый 28.02.2015, 13:12   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Нужно перенести все значения из экселя в DBF
Сохрани документ как DBF. То что ты делаешь контрпродуктивно.
Я не знаю почему у тебя не заносятся значения, отлаживать надо, но я бы так не делал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.02.2015, 13:18   #7
Agusha3
 
Регистрация: 28.02.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Сохрани документ как DBF. То что ты делаешь контрпродуктивно.
Я не знаю почему у тебя не заносятся значения, отлаживать надо, но я бы так не делал.
А через делфи разве можно сохранить xls как DBF? Я такого не встречал
Agusha3 вне форума Ответить с цитированием
Старый 28.02.2015, 14:40   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А че нет? Вызвать метод сохранения с параметрами нужными.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.02.2015, 15:28   #9
Agusha3
 
Регистрация: 28.02.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А че нет? Вызвать метод сохранения с параметрами нужными.
Спасибо, буду пробовать, интересно что если брать метод считывания из ячейки, то в мемо проходят все значения переменной, а вот до бд мало что доходит.
Agusha3 вне форума Ответить с цитированием
Старый 28.02.2015, 15:55   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может быть ошибки всплывают? Так то код правильный, значит СУБД может отвергать по разным причинам. Мало ли, тип не соответствует, или пусто в ячейке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменной t присвоить значение true, если дата d1, m1 предшествует (в рамках года) дате d2, m2, и значение false иначе Andrew5674 Паскаль, Turbo Pascal, PascalABC.NET 4 11.12.2013 21:37
Возможно ли в массив типа char записать первым элементом значение переменной типа float? Green Gin Общие вопросы C/C++ 2 05.12.2011 01:50
Найти значение переменной y в зависимости от значения переменной х Rishi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.05.2011 20:25
значение переменной ололошенько Общие вопросы C/C++ 2 05.09.2010 18:05
Значение переменной 4BlooD Общие вопросы Delphi 2 20.01.2010 16:09