Помогите новичку с запросами к базам

  • Автор темы Parasit
  • Дата начала
P

Parasit

#1
Проблема состоит из того что я не знаю как правильно писать запросы к базе

Вот процес такой (обьясняю как умею :) простите зеранее)

1. создал базу через датабайз мэнаджер Парадокс 7 в СиБуилдере
2. Теперь допустим надо внести запись из "Едит1" в какойнибудь опр-й столбец созд-й таблицы
Вот покажите самому глупому как пожалуйста!

Я делал так (не смейтесь :D если чё не так)

Query1->SQL->Text = "INSERT INTO tablename (name) VALUES ('чтото')";

не робит и еще я так понимаю вдруг заработает (маловерояно правда)
он запишет в таблицу tablename и столбец name значение VALUES ('чтото')";
а мне нужно чтоб он именно значение взял из "едит1" и вставил

Всем заранее огромное спасибо!
 
L
#2
У Вас обязательная цель использовать SQL?
Ведь можно воспользоваться навигационной системой доступа к БД.
Что-то типа:

Код:
Query1->Edit();
Query1->FieldByName("name")->AsString="что-то";
Query1->Post();
Удачи!
 
B

Barmutik

#3
А какая конкретно ошибка?

Ну если из Эдита то что-то аля так:

Код:
Query1->SQL->Text = 'INSERT INTO tablename (name) VALUES (' + #39 + Edit1.Text + #39 + ')';
 
U

useshorttime

#4
сделал уже две БД в Builder6, ни разу не пользовался sql (не знаю к добру это или нет)
Мой вариант вашей задачи:
Table1->Open();
Table1->Edit();
Table1->FieldByName("Field1")->Value = Edit1->Text;
Table1->Post();

У меня вопрос к опытным: есть ли вообще преимущество использования sql-вставок в код программы?
 
L
#5
По моему опыту если база хранит данные в dbf, то ситуация с навигационной системой и SQL разная.
Подчиняется общему правилу: Если обработка происходит с группой записей - быстрее SQL, если с 1 - быстрее навигация.
Например: GotoKey() стабатывает во много раз быстрее SELECT - WHERE, при условии, что отбирается 1 уникальная запись (RecNo не всчёт). А если необходимо сделать массовый UPDATE - выигрывает SQL.
 
P

Parasit

#6
Вот как изменить значение какого либо столбца и определенной строки в таблице
и еще вопрос как можно удалить "строки" в таблице по условию:

Например стобец содержит в нескольких строках цифры 102
вот как удалить все строки содержащие в столбце цифру 102
 
L
#9
Однозначно.
Только нужно сначала фильтр поставить.

Table1->Filtered=false;
Table1->Filter="Field1=102";
Table1->Filtered=true;
Table1->First();
While(!Table1->Eof)
{
Table1->Delete();
}

Но как я уже говорил выше операция на группой записей в SQL при использовании DBF работает быстрее.
 
P

Parasit

#10
ильтр это типа выделение необходимого потом делет?