Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Не найдена таблица


Автор: Victor 12.2.2004, 16:35
Пишу в query:
INSERT INTO Table1(name) values(combobox1.text);
1)Можно ли так вообще писать? (combobox1.text);
2)Выдает ошибку что ненаходит в папке Bin таблицу, но бд то находиться на c:\dbtest, почему он там её не ищет?

Автор: gray_k 12.2.2004, 16:51
Так он у тебя ищет в текущей папке. Пропиши полный путь в свойствах.
Писать так можно, только надо следить за правильным преобразованием типов.

Автор: Pakshin A. S. 12.2.2004, 16:57
1) По-моему запрос должен выглядить немного иначе:
Код

Query1.SQl.Text:='INSERT INTO Table1 (name) values ('+ #39 + combobox1.text + #39 + ');';


2) Может не так подключился...

Автор: Victor 12.2.2004, 17:59
нечего непойму, в свойствах чего? datasource, table, query?
Pakshin A. S. ну так я через инпектор объектов, там прямо свойство SQL

Автор: Victor 12.2.2004, 18:10
и нехочет он вставлять combobox1.text; я делал так как предложил Pakshin A. S. но все равно, вот :
INSERT INTO TABLE1(NAME) VALUES (combobox1.text); а если 'combobox1.text' то это идет как строка
(Я откомпилил и скопировал в папку с БД)

Автор: Pakshin A. S. 12.2.2004, 18:43
А на кой через инспектор? Ты делай, допустим, в Button1Click...
Код

begin
with Query1 do
  begin
   Close;
   SQl.Text:='INSERT INTO Table1 (name) values ('+ #39 + combobox1.text + #39 + ');';
   Open;
  end;
end;

Работает на 100%!

Автор: Victor 12.2.2004, 19:14
да заработало сенк но че за ерор
error creating cursor handle? всегда появляеться=(

Автор: Pakshin A. S. 12.2.2004, 19:22
Где-то указатель создаёшь, а вообще, если не мешает, то забей на него...

Хорошо бы исходник с этой ошибкой кинуть -> народ мигом разберётся! biggrin.gif

Автор: Victor 12.2.2004, 19:54
да нечего в исходнике кроме твоего кода вроде нет, ну да ладно. У меня другая трабла, почему после добавления чего либо в таблицу она не обновляеться ? Если надо table1.refresh(нашел вдруг), то я это прописывал =)
и вот
Код

try
strtodate(edit1.Text);
with Query1 do
 begin
  Close;
  SQl.Text:='INSERT INTO Table1 (Data) values ('+ #39 + edit1.Text + #39 + ');';
  Open;
  table1.Refresh;
 end;

except
showmessage('error');
end;
end;

Выдает error, но добавляет дату. Это уже в скомпилинном приложении.
=(

Автор: Pakshin A. S. 12.2.2004, 20:01
table1.Refresh; и end; поменяй местами... biggrin.gif

Автор: Victor 12.2.2004, 20:36
все равно

Автор: Victor 12.2.2004, 22:32
И можеш объяснить как ты пишеш +#39 ... т.е зачем? Это знак ' - так?
и что получаеться
SQl.Text:='INSERT INTO Table1 (Data) values ('+ ' + edit1.Text + ' + ');';
Непойму и как несколько значений вписать например
INSERT INTO TABLE1(Name, Number, Data) values (...?...);

Автор: Medved 13.2.2004, 20:08
Да..., ну наворотили тут. Читайте FAQ. Триста раз уже об этом говорили.
Стоит всего раз его прочитать, и все ваши тысячи вопросов, сразу отпадут.

Ладно, не поленюсь, напишу:

Код

with Query1 do
begin
 Close; //закрываем набор данных
 SQL.Clear; //очищаем текст SQL запроса
 SQL.Add('INSERT INTO Table1(Field1,Field2,Field3)');
 SQL.Add('VALUES (:par1,:par2,par3)');
 ParamByName('par1').AsValue := ComboBox1.Text; //Присваиваем значения параметрам
 ParamByName('par2').AsValue := 235;
 ParamByName('par3').AsValue := Edit1.Text;
 ExecSQL; //выполняем SQL
end;


Обратите внимание на
1) Параметры (:par1 и т.д.)
2) Запрос, который выполняет модификацию данных должен выполняться с помощью процедуры ExecSQL.

Вообщем я объяснил очень поверхностно, а эта тема обширная.
Специально, чтобы у нее возникало таких вопросов, и не было лишних и ненужных дисскусий, Vit написал статью http://forum.vingrad.ru/index.php?act=ST&f=32&t=3954 и я Вам настоятельно рекомендую ее прочитать, прежде чем садиться и писать приложение, ориентированное на работу с БД.

Автор: Medved 13.2.2004, 20:15
Модератор: 2Pakshin A. S. Прошу не обижаться, но к Вам большая просьба, если не знаете, то лучше вообще не отвечать, чем давать неправильные ответы, и вводить человека в заблуждение. Это не единичный топик, где я заметил за Вами такую тенденцию.

Автор: Pakshin A. S. 13.2.2004, 20:26
Цитата
Да..., ну наворотили тут.

Но ведь работает! biggrin.gif

Автор: Victor 13.2.2004, 20:26
Pegas я как раз и прочитал эту статью но об SQL тама было немного написано
Все равно спасибо !

Автор: Pakshin A. S. 13.2.2004, 20:30
Цитата(Pegas @ 13.2.2004, 21:15)
Модератор: 2Pakshin A. S. Прошу не обижаться, но к Вам большая просьба, если не знаете, то лучше вообще не отвечать, чем давать неправильные ответы, и вводить человека в заблуждение. Это не единичный топик, где я заметил за Вами такую тенденцию.

Буду следить за собой... Простите...

Автор: Medved 13.2.2004, 20:50
Если необходимо по SQL то вот сюда: http://forum.vingrad.ru/index.php?act=ST&f=12&t=5638

P.S. smile.gif на нашем форуме есть все!

Автор: Victor 13.2.2004, 20:53
а да я читал его статью в FAQ скаченном, а не на форуме может тама чего и нет,
блин
type mismatch in expression ошибка
Код

Close; //закрываем набор данных
SQL.Clear; //очищаем текст SQL запроса
SQL.Add('INSERT INTO Table1(Name, Number, Data)');
SQL.Add('VALUES (:par1,:par2,:par3)');
ParamByName('par1').AsString := ComboBox1.Text; //Присваиваем значения параметрам
ParamByName('par2').AsSmallInt := strtoint(combobox2.text);
ParamByName('par3').Asdate := strtodate(Edit1.Text);
ExecSQL; //выполняем SQL

Неочень пойму с типами, у меня Name - Alpha, Number - Number, Data - Date; все компилится но выдает ошибку при клике на кнопку куда я повесил все

Автор: Medved 13.2.2004, 21:19
Не могу ответить на этот вопрос, поскольку не знаю какие значения вы пихаете в параметры.

Но пропробуйте сделать так, как я написал, использовать AsValue

Автор: Medved 13.2.2004, 21:20
И еще, не забывайте пользоваться отладчиком и точками останова.

Автор: Victor 13.2.2004, 21:30
Стоп, AsValue у меня пишет нет такого
пихаюя я в combobox1 - строку в combobox2- цифру (1 символ), в edit1 дата типа 1302.04

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)