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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2012, 05:13   #1
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
Вопрос Пытаюсь записать данные в ячейки таблицы

Разрабатываю дипломную, шахматы с мультиплеером, но это уже все готово, осталось связать игру с базой данных, сначала использовал текстовые файлы, но преподаватель против, говорит делай мне базу данных, ну и ладно.
Почитал статейки, и никак не пойму, пытался делать так.

В базе данных есть таблица "Игроки", в этой таблице есть поля "Имя" и "Пароль".

Код:
procedure Test(Name,Password:string);
BEGIN
with Form_Server.ADOQuery do
    begin
    Close;
    SQL.Clear;
    SQL.Text:=' SELECT * FROM [Игроки] ' ;
    Open;
    Insert;
    FieldByName('Имя').AsString:=Name;
    FieldByName('Пароль').AsString:=Password;
    ExecSQL;
    end;
END;
Нужно в базу данных в таблицу "Игроки" записать нового игрока: "Имя", "Пароль".
Приложение работает, но в базу данных ничего не записывается. В чем ошибка, как исправить?
Каждый день узнаю новое...

Последний раз редактировалось Anton911; 16.03.2012 в 05:20.
Anton911 вне форума Ответить с цитированием
Старый 16.03.2012, 05:26   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
procedure Test(Name,Password:string);
BEGIN
with Form_Server.ADOQuery do
    begin
    Close;
    SQL.Clear;
    SQL.Text:=' insert into [Игроки]([Имя], [Пароль]) values (:name_,:password_) ' ;
    Parameters.ParamByName('name_').AsString:=Name;
    Parameters.ParamByName('password_').AsString:=Password;
    ExecSQL;
end;
end;
PS
Лучше не используйте кириллицу в названиях таблиц, полей и тп.

Последний раз редактировалось vovk; 16.03.2012 в 05:28.
vovk вне форума Ответить с цитированием
Старый 16.03.2012, 05:31   #3
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

vovk, при компиляции ошибка, наводит на эти строчки:
Код:
Parameters.ParamByName('name_').AsString:=Name;
Parameters.ParamByName('password_').AsString:=Password;
И пишет E2003 Undeclared identifier: 'AsString'.
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 16.03.2012, 05:36   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
   Insert;
    FieldByName('Имя').AsString:=Name;
    FieldByName('Пароль').AsString:=Password;
   Post;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 16.03.2012, 05:43   #5
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Спасибо всем, кто помогал, всем +
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 16.03.2012, 05:50   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Anton911 Посмотреть сообщение
vovk, при компиляции ошибка, наводит на эти строчки:
Код:
Parameters.ParamByName('name_').AsString:=Name;
Parameters.ParamByName('password_').AsString:=Password;
И пишет E2003 Undeclared identifier: 'AsString'.
хех действительно
Код:
Parameters.ParamByName('name_'):=Name;
Parameters.ParamByName('password_'):=Password;
vovk вне форума Ответить с цитированием
Старый 18.03.2012, 09:12   #7
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Вновь нужна ваша помощ)
Написал функцию, которая авторизирует пользователя из базы данных, она работает, теперь же пытаюсь сделать так, чтобы при авторизации считывалась информация побед и поражений, и не получается.
Код:
function bd_Autorization(pName,pPassword:string):integer;
var Res,Vict,Loos:integer;
BEGIN
Res:=0;
with Form_Server.ADOQuery do
    Begin
    Close;
    SQL.Clear;
    SQL.Text:=
      Format('SELECT * FROM [Игроки] ' +
          'WHERE [Имя] ="%s" AND [Пароль] ="%s"',
          [pName, pPassword]);
    Open;
    If RecordCount > 0 then
      Begin
      Res:=1;
      Close;
      SQL.Clear;
      SQL.Text:='SELECT * FROM [Игроки] WHERE [Имя]='+pName; //Находим ячейку с нужным именем
     // Open;
      Vict:=FieldByName('Победы').Value; //Читаем из ячейки победы
      Loos:=FieldByName('Поражения').Value; //Читаем из ячейки поражения
      ExecSQL;
      End Else
      Begin
      Res:=2;
      End;
    End;
Result:=Res;
showmessage('Vict='+inttostr(Vict)+' Loos='+inttostr(Loos));
END;
Пишет невозможно найти "Победы", "Поражения", как исправить?
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 18.03.2012, 10:47   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Сначала прекратите использовать имена на кириллице.

ЗЫ
попробуйте FieldByName('[Победы]').Value;

но прекратите геморроится, используйте имена на латинице
vovk вне форума Ответить с цитированием
Старый 18.03.2012, 12:44   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
      Format('SELECT * FROM [Игроки] ' +
          'WHERE [Имя] =:"%s" AND [Пароль] =:"%s"',
          [pName, pPassword]);
В запросе перед параметрами нужно ставить знак двоеточия - так СУБД определяет что тут параметр, а ты не поставил, когда запрос форматировал.
И еще: ExecSQL; не выполняет SELECT запрос. Пиши Open
P.S. Кста, а зачем тут функция Format?

P.P.S. Кста, только что заметил, что автор вообще не использует параметры в запросе. Нет там ни слова Победы, ни слова Поражения в любом их проявлении. Ессно оно ругается.
I'm learning to live...

Последний раз редактировалось Stilet; 18.03.2012 в 12:47.
Stilet вне форума Ответить с цитированием
Старый 18.03.2012, 13:05   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Stilet, TC пытается просто выдернуть значения полей из не активизированного ADOQuery
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать в ячейки Алекс7 Microsoft Office Excel 2 13.07.2011 13:49
Пытаюсь добавить данные (InterBase) Айдар БД в Delphi 3 14.06.2011 09:42
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59
данные 1 ячейки трансформировать в 2 ячейки user7789 Microsoft Office Excel 22 30.07.2009 16:25
Как записать данные в другую программу? Спартак Общие вопросы Delphi 23 19.04.2008 22:33