Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
1

Ошибка при изменении БД

23.09.2010, 16:16. Показов 846. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   if(s.SubString(1,s.AnsiPos("#")-1)=="reg")
   {
     for(Form2->Table1->First();!Form2->Table1->Eof;Form2->Table1->Next())
       {
         Form2->Table1->Edit();
         if(Form2->Table1->FieldByName("Имя")->Text==s.SubString(s.AnsiPos("#")+1,(s.AnsiPos("%")-s.AnsiPos("#")-1)));
         {
           ServerSocket1->Socket->Connections[0]->SendText("/s#Такое имя уже существует, попробуй другое$");
           return;
         }
       }
     Form2->Table1->Append();
     Form2->Table1->Edit();
     Form2->Table1->FieldByName("Имя")->Text=s.SubString(s.AnsiPos("#")+1,s.AnsiPos("%")-s.AnsiPos("#")-1);
     Form2->Table1->FieldByName("Пароль")->Text=s.SubString(s.AnsiPos("%")+1,s.AnsiPos("@")-s.AnsiPos("%")-1);
     Form2->Table1->FieldByName("Дата")->Text=Date().CurrentDate();
     Form2->Table1->FieldByName("Время")->Text=Time().CurrentTime();
     Form2->Table1->FieldByName("IP")->Text=String(ServerSocket1->Socket->RemoteAddress);
     Memo1->Lines->Add(s);
   }
Где тут ошибка??
Если не видно где не правильно у меня, кину ошибку. просто не охота было скрин делать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2010, 16:16
Ответы с готовыми решениями:

Ошибка Dataset not in edit or insert mode при изменении БД
Здравствуйте. использую дбгрид, ADOQuery, DataSource в общем строка в дбгриде допустим: Петров...

Ошибка при изменении полей
Добрый день! Помогите, пожалуйста. На форме есть DBGrid, IBDatabase, IBTable, Source,...

Ошибка при создании объекта. (При изменении цвета заполнения фигуры)
Дано: Adobe Flash CS3 Prof. Требуется программно изменить цвет заполнения нарисованной фигуры,...

Ошибка при изменении записи и при сохранеии
Моя ошибка: Project Project1.exe raised exception class EOleException winch message 'невозможно...

5
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
24.09.2010, 08:15 2
Интересный у тебя цикл, никогда подобных записей не встречал, а вообще тебе не кажется что намного удобнее было бы запросом проверить есть такое имя в БД
C++
1
(SELECT бла бла бла FROM имя твоей таблицы WHERE Имя = '"+s.SubString(s.AnsiPos("#")+1,(s.AnsiPos("%")-s.AnsiPos("#")-1))+"' )
или нету оно и намного быстрее было и добавить в БД новую запись запросом тоже намного удобнне

не по теме:
Или Челябинские программисты настолько суровые что им проще в случае чего перебрать 1000 а иногда и более записей на нахождения повтора чем пойти по легкому пути и воспользоваться запросом=)
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
24.09.2010, 14:46  [ТС] 3
Цитата Сообщение от Larsus Посмотреть сообщение
не по теме:
Или Челябинские программисты настолько суровые что им проще в случае чего перебрать 1000 а иногда и более записей на нахождения повтора чем пойти по легкому пути и воспользоваться запросом=)

чет типа того)

Цитата Сообщение от Larsus Посмотреть сообщение
намного удобнее было бы запросом проверить есть такое имя в БД
я не умею так. не знаю что делать с Select From Where

Добавлено через 5 часов 8 минут
Так про ошибку ничего не знаешь?

Добавлено через 43 минуты
или напишите пример с Select From и Where
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
24.09.2010, 15:02 4
C++
1
2
3
4
5
6
7
8
    Query1->Close();
    Query1->SQL->Clear();
    Query1->SQL->Add("SELECT COUNT(*) AS CNT FROM 1 WHERE 2 =" + s.SubString(s.AnsiPos("#")+1,(s.AnsiPos("%")-s.AnsiPos("#")-1)));
    Query1->Open();
    if (Query1->FieldByName("CNT") != 0)
    {
        //такое имя уже существует
    }
заместо цифр в запросе
1 - название твоей таблицы
2 - имя поля в котором ищешь совпадение

ну и разумееться компоненту Query1 не забудь перед этим указать настройки соединения с БД как ты компоненту Table делал
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
24.09.2010, 16:12  [ТС] 5
в
C++
1
if (Query1->FieldByName("CNT") != 0)
что делает
Цитата Сообщение от Larsus Посмотреть сообщение
"CNT"
Добавлено через 52 секунды
и для чего надо закрывать Query в самом начале?
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
25.09.2010, 08:05 6
Цитата Сообщение от ProstoMad Посмотреть сообщение
в
Код C++
1
if (Query1->FieldByName("CNT") != 0)
что делает
Сообщение от Larsus
"CNT"
мда тут ошибочка вышла правильно будет if (Query1->FieldByName("CNT")->AsInteger != 0)

на счет CNT, если просто написать
SQL
1
SELECT COUNT(*) FROM 1 WHERE бла бла бла
то ты не сможешь обратиться к полю в котором будет выведено количество записей так как запись типа
C++
1
Query1->FieldByName("COUNT(*)")->AsInteger
не будет работать, поэтому в самом запросе мы присваиваем нужное название этому полю я присвоил CNT можешь написать все что угодно только не забудь поставить AS.



Цитата Сообщение от ProstoMad Посмотреть сообщение
и для чего надо закрывать Query в самом начале?
Ну вообще это я всегда делаю на автомате и никогда не пробовал его не закрывать=), имхо так корректней ведь после его открытия ты же его не закрываешь значит в след раз он будет открыт перед его использованием=)
0
25.09.2010, 08:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2010, 08:05
Помогаю со студенческими работами здесь

Ошибка при изменении данных
Есть база данных, которая привязана к проекту через Binding Source. Вывожу данные таблицы в...

Ошибка при изменении пароля
Добрый день, прошу помощи в решение данной ситуации: При изменении пароля вылетает ошибка. VB не...

Ошибка при изменении графика
Здравствуйте. Возможно этот вопрос уже был, но ответа я на него не нашёл. Не могу изменить...

Ошибка при любом изменении БД
Пишу на АСП, через АДО. При попытке обновить изменения Recordset пишет: 'Текущий объект Recordset...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru