Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110

Не работает добавление значений в бд

10.11.2014, 20:41. Показов 2434. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не работает добавление значений в бд. Подскажите в чем ошибка


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Prodavec').Value:=DBEdit5.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Pokupatel').Value:=DBEdit6.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Data').Value:=DBEdit7.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Model_Guitar').Value:=DBEdit8.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Cena').Value:=DBEdit9.Text;
        try
          DM.QGuitar_Prodaja.ExecSQL;
            except
              ShowMessage('Error! Prodaja Add!');
              Exit;
            end;
          DM.QGuitar_Prodaja.Close;
          DM.QGuitar_Prodaja.Open;
          DM.QGuitar_Prodaja.Last;
        end;


в свойстве sql adoquery прописано:
SQL
1
2
INSERT INTO Guitar_Prodaja(ID_Prodaja,Model_ID,Prodavec,Pokupatel,DATA,Model_Guitar,Cena,Prodavec_ID)
VALUES(:ID_Prodaja,Model_ID;:Prodavec;:Pokupatel;:DATA;:Model_Guitar;:Cena;:Prodavec_ID)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2014, 20:41
Ответы с готовыми решениями:

Сравнение значений, добавление значений
Здравствуйте. Можно ли проделать следующую операцию в Excel? Есть два файла с данными. В первом файле нужно найти заданное текстовое,...

Добавление значений в dropdownlistfor
Добрый день. Существует зависимость двух селектов. При выборе значения, подбираются возможные варианты во втором по значению. ...

Таблица добавление значений
привет как добавить строки к таблице? вот так сделал но почемуто выводится только первый столбец... for(int i=0; i<Count; i++) ...

43
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 19:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от @lex999 Посмотреть сообщение
QGuitar_Prodaja.SQL.Add('INSERT INTO Guitar_Prodaja');
QGuitar_Prodaja.SQL.Add('(Pokupatel,Data ,Cena,Model_ID,Prodavec_ID)');
QGuitar_Prodaja.SQL.Add('VALUES("'+ Edit1.Text +'","'+Edit2.Text+'","'+ Edit3.Text+'")');
Во всяком случае, ты же не будешь через Edit2 и Edit3 передавать целые числа? Тут должны быть ИДешники гитары и продавца. Самый простой способ организовать интерфейс пользователя для их передачи - поставить на форме два небольших дбгрида - один для гитар, другой для продавцов, в каждом гриде показываешь только по одной колонке - с названием. В зависимости от выбранной записи в дбгридах подставляем оттуда в запрос ид гитары и продавца.
1
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 20:43  [ТС]
а как к нему(id) обратиться через DBGrid.columns ?

Добавлено через 7 минут
и через что можно передавать целые числа ?
0
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 20:54  [ТС]
визуально должно быть примерно так ?
Миниатюры
Не работает добавление значений в бд  
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 21:07
Цитата Сообщение от @lex999 Посмотреть сообщение
а как к нему(id) обратиться через DBGrid.columns ?
Нет не так. Ты же привяжешь к этим DBGrid-ам, допустим ADOТable - от гитар и продавцов.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Prodavec_ID').Value:=
        ADOTable1.FieldByName('Prodavec_ID').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Data').Value:=DBEdit7.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Model_ID').Value:=
       ADOTable2.FieldByName('Model_ID').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Cena').Value:=DBEdit9.Text;
        try
          DM.QGuitar_Prodaja.ExecSQL;
            except
              ShowMessage('Error! Prodaja Add!');
              Exit;
            end;
          DM.QGuitar_Prodaja.Close;
          DM.QGuitar_Prodaja.Open;
          DM.QGuitar_Prodaja.Last;
        end;
SQL
1
2
INSERT INTO Guitar_Prodaja(Prodavec_ID,Model_ID,Pokupatel,DATA,Cena)
VALUES(:Prodavec_ID,Model_ID,:Pokupatel,:DATA,:Cena)
1
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 22:03  [ТС]
dim07, написал вот так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TFormMain.SpeedButton7Click(Sender: TObject);
begin
      DM.QGuitar_Prodaja.Insert;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Prodavec_ID').Value:=
      DM.QProdavec.FieldByName('ID_Prodavec').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Model_ID').Value:=
      DM.QGuitar_Model.FieldByName('ID_Model').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Pokupatel').Value:=Edit1.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Data').Value:=DBEdit5.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Cena').Value:=DBEdit8.Text;
        try
          DM.QGuitar_Prodaja_Add.ExecSQL;
            except
              ShowMessage('Error! Prodaja Add!');
              Exit;
            end;
          DM.QGuitar_Prodaja.Close;
          DM.QGuitar_Prodaja.Open;
          DM.QGuitar_Prodaja.Last;
 
end;
Теперь создается новая строка в нее можно заносить значения, но при нажатии на добавить пишет ошибку: приложение использует для текущей операции значение неверного типа

приложил файлы бд, может вам так удобнее будет
Вложения
Тип файла: rar bd.rar (698.9 Кб, 0 просмотров)
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 22:08
Цитата Сообщение от @lex999 Посмотреть сообщение
визуально должно быть примерно так
Нафига тебе показывать идешники в дбгридах? Я же говорил
Цитата Сообщение от dim07 Посмотреть сообщение
по одной колонке - с названием
и кстати, уже был у нас разговор ранее, DBEdit для остальных полей (для случая добавления записи через выполнение запроса) не пойдут, там простые едиты надо...

Добавлено через 3 минуты
Цитата Сообщение от @lex999 Посмотреть сообщение
приложение использует для текущей операции значение неверного типа
смотри в режиме отладки куда что попадает, у тебя например цена - число, никто кроме тебя не в курсе что ты там пишешь, лучше конвертировать строку в число там. А строчные данные в запросе без апострофов - поле Data и покупатель
0
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 22:13  [ТС]
dim07,

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TFormMain.SpeedButton7Click(Sender: TObject);
begin
      DM.QGuitar_Prodaja.Insert;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Prodavec_ID').Value:=
      DM.QProdavec.FieldByName('ID_Prodavec').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Model_ID').Value:=
      DM.QGuitar_Model.FieldByName('ID_Model').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Pokupatel').Value:=Edit1.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Data').Value:=Edit2.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Cena').Value:=Edit3.Text;
        try
          DM.QGuitar_Prodaja_Add.ExecSQL;
            except
              ShowMessage('Error! Prodaja Add!');
              Exit;
            end;
          DM.QGuitar_Prodaja.Close;
          DM.QGuitar_Prodaja.Open;
          DM.QGuitar_Prodaja.Last;
 
end;

ошибку перестало выводить, но вместе с этим перестали заноситься значения покупатель, дата, цена в dbgrid
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 22:34
А решил без запроса... тогда
Delphi
1
2
3
4
DM.QGuitar_Prodaja.Append;
.......
......
DM.QGuitar_Prodaja.Post;
Но в таком варианте то что я говорил про едиты... в общем делай как хочешь
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TFormMain.SpeedButton7Click(Sender: TObject);
begin
      DM.QGuitar_Prodaja.Append;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Prodavec_ID').Value:=
      DM.QProdavec.FieldByName('ID_Prodavec').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Model_ID').Value:=
      DM.QGuitar_Model.FieldByName('ID_Model').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Pokupatel').Value:=Edit1.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Data').Value:=Edit2.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Cena').Value:=Edit3.Text;
     DM.QGuitar_Prodaja.Post;
 end;
1
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 22:36  [ТС]
запрос же в свойстве sql у Qguitar_prodaja_add
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 22:42
запрос же в свойстве sql у Qguitar_prodaja_add
блин, ты меня запутал, если ты пишешь DM.QGuitar_Prodaja.Insert; или DM.QGuitar_Prodaja.Append; - запрос не нужен, также как и параметры
1
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 22:48  [ТС]
dim07, убрал, не знаете почему в dbgrid при добавлении заносятся значения из первой строки(этого dbgrid)
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 22:50
Добавить запись можно так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TFormMain.SpeedButton7Click(Sender: TObject);
begin
      DM.QGuitar_Prodaja.Append;
      DM.QGuitar_Prodaja.FieldByName('Prodavec_ID').AsInteger:=
      DM.QProdavec.FieldByName('ID_Prodavec').AsInteger;
      DM.QGuitar_Prodaja.FieldByName(('Model_ID').AsInteger:=
      DM.QGuitar_Model.FieldByName('ID_Model').AsInteger;
      DM.QGuitar_Prodaja.FieldByName('Pokupatel').Value:=Edit1.Text;
      DM.QGuitar_Prodaja.FieldByName('Data').Value:=Edit2.Text;
      DM.QGuitar_Prodaja.FieldByName('Cena').Value:=Edit3.Text;
     DM.QGuitar_Prodaja.Post;
 end;
Или эдак
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TFormMain.SpeedButton7Click(Sender: TObject);
begin
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Prodavec_ID').Value:=
      DM.QProdavec.FieldByName('ID_Prodavec').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Model_ID').Value:=
      DM.QGuitar_Model.FieldByName('ID_Model').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Pokupatel').Value:=Edit1.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Data').Value:=Edit2.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Cena').Value:=Edit3.Text;
        try
          DM.QGuitar_Prodaja_Add.ExecSQL;
            except
              ShowMessage('Error! Prodaja Add!');
              Exit;
            end;
          DM.QGuitar_Prodaja.Close;
          DM.QGuitar_Prodaja.Open;
          DM.QGuitar_Prodaja.Last;
end;
0
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 22:55  [ТС]
dim07, если использовать последний способ, то значения в новую строку копируются из 1 строки
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 22:57
Из 1 строки чего?
0
4 / 4 / 0
Регистрация: 26.06.2013
Сообщений: 110
15.11.2014, 22:58  [ТС]
dim07, этого же dbgrid
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 23:01
грид Продаж? Код свой покажи еще
0
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 49
15.11.2014, 23:04
dim07,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TFormMain.SpeedButton7Click(Sender: TObject);
begin
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Prodavec_ID').Value:=
      DM.QProdavec.FieldByName('ID_Prodavec').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Model_ID').Value:=
      DM.QGuitar_Model.FieldByName('ID_Model').AsInteger;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Pokupatel').Value:=Edit1.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Data').Value:=Edit2.Text;
      DM.QGuitar_Prodaja_Add.Parameters.ParamByName('Cena').Value:=Edit3.Text;
        try
          DM.QGuitar_Prodaja_Add.ExecSQL;
            except
              ShowMessage('Error! Prodaja Add!');
              Exit;
            end;
          DM.QGuitar_Prodaja.Close;
          DM.QGuitar_Prodaja.Open;
          DM.QGuitar_Prodaja.Last;
end;
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
15.11.2014, 23:13
Покупатель дата и цена никак не могут из первой строки таблицы прилететь, а с QProdavec и QGuitar_Model с чем у тебя связаны? Там лукапы чтоли гдето еще есть? A на двух новых гридах что висит не они?
0
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 49
15.11.2014, 23:22
dim07, да лук апы есть для отображения модели гитары и фио продавца, те два грида я убрал, вместо них edit2 и edit3. Prodavec id связан с Id prodavec, а model I'd с Id model
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
16.11.2014, 00:48
Цитата Сообщение от alexey9 Посмотреть сообщение
те два грида я убрал, вместо них edit2 и edit3
я наверно плохой учитель, тебе проще книгу про делфи с бд почитать все таки и просто про реляционные базы. Раз поменял, видать сам знаешь чо делать. Мы как немой с глухим, народ смешим только.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2014, 00:48

Добавление значений в select
Задача состоит в следующем нужно средствами jquery обратится к конкретному id (некий select) и записать туда массив значений. На google...

Добавление кнопок и значений
Здравствуйте, мне нужно очень ваша помощь, мне сдавать нужно курсовую работу, код программы на C# есть. Кто может мне помочь создать...

Добавление значений в таблицу
Есть таблица. с дополнительными картинками для товаров, в ней есть поля |id|parent|name| id - идентификатор картинки parent - товар,...

Добавление значений из столбца
Есть строка mysqli_query($connection,"UPDATE score SET score=score+techies_cell WHERE username='$USERNAME'"); score и...

Textbox добавление значений
private void button2_Click(object sender, EventArgs e) { string s = Convert.ToString(ObshFrin()); ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru