powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка формирования ib-значения входящего параметра
5 сообщений из 5, страница 1 из 1
Ошибка формирования ib-значения входящего параметра
    #40122951
Airball
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня. Я пытаюсь создать приложение для работы с базами данных в программе visual basic 2008. Для создания самой базы данных я использую программу IBexpert (Firebird 2.5v). В общем, у меня получилось создать приложение, умеющее вносить данные в таблицу, удалять данные из таблицы, отображать данные. Однако уже второй день я никак не могу настроить обновление(update) данных. Что бы я ни делал, мне выкидывает ошибку: "Ошибка формирования ib-значения входящего параметра. Позиция 1. Конвертирование из [DBTYPE_WSTR] в [DBTYPE_I4]". Я понял, что ошибка как-то связана с ID(primary key) в моей таблице. Прошу вашей помощи! Внизу прикладываю четыре версии кода: первые две - внесение, удаление, отображение данных. Последняя - нерабочий код, который нуждается в доработке. Также выкладываю скриншот таблицы из Ibexpert(она одна). Спасибо!

Работающий код внесения данных:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Fcommand = New OleDbCommand("INSERT INTO FF (NAME, PRICE) VALUES (:NAME, :PRICE)", Fconnection)
Fcommand.Parameters.AddWithValue(":NAME", ItnameTb.Text)
Fcommand.Parameters.AddWithValue(":PRICE", PriceTb.Text)
If ItnameTb.Text = "" Or PriceTb.Text = "" Then
MsgBox("Пожалуйста, укажите название и цену товара!")
Else
Fconnection.Open()
Fcommand.ExecuteNonQuery()
MsgBox("Товар был успешно добавлен в базу!")
ref()
End If
Fconnection.Close()
Работающий код удаления данных:
Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
Fcommand = New OleDbCommand("DELETE FROM FF WHERE PRODUCT_ID = :PRODUCT_ID", Fconnection)
Fcommand.Parameters.AddWithValue(":PRODUCT_ID", TextBox2.Text)
If TextBox2.Text = "" Then
MsgBox("Пожалуйста, укажите ID товара, который вы желаете удалить!")
Else
Fconnection.Open()
Fcommand.ExecuteNonQuery()
MsgBox("Товар успешно был удален!")
Fconnection.Close()
ref()
End If

End Sub

Работающий код отображения данных:
Private Sub Butto3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Butto3.Click
Dim ds As New DataSet
Fadapter = New OleDbDataAdapter("SELECT * FROM FF", Fconnection)
Fadapter.Fill(ds)
ItemDGV.DataSource = ds.Tables(0)
End Sub

Нерабочий код обновления(проблема):
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Fcommand = New OleDbCommand("UPDATE FF SET NAME = :NAME, PRICE = :PRICE WHERE PRODUCT_ID = :PRODUCT_ID", Fconnection)
Fcommand.Parameters.AddWithValue(":PRODUCT_ID", TextBox2.Text)
Fcommand.Parameters.AddWithValue(":NAME", ItnameTb.Text)
Fcommand.Parameters.AddWithValue(":PRICE", PriceTb.Text)
Fconnection.Open()
Fcommand.ExecuteNonQuery()
Fconnection.Close()
End Sub
...
Рейтинг: 0 / 0
Ошибка формирования ib-значения входящего параметра
    #40122955
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AirballЯ пытаюсь создать приложение для работы с базами данных в программе visual basic
2008.

В нём есть функция преобразования строки в число? Если да - используй её.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка формирования ib-значения входящего параметра
    #40122968
Airball
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура! Спустя пару часов мучений, я таки смог разобраться. Оказалось, что нужно, чтобы все атрибуты шли в правильном порядке. Т.е где идут подряд три строки Fcommand.Parameters.AddwithValue, они должны соотвествовать порядку из строки выше "Update FF....". В любом случае, у кого будет такая же проблема, я оставляю пофикшенный код:

Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Fcommand = New OleDbCommand("UPDATE FF SET NAME = :NAME, PRICE = :PRICE WHERE PRODUCT_ID = :PRODUCT_ID", Fconnection)
Fcommand.Parameters.AddWithValue(":NAME", ItnameTb.Text)
Fcommand.Parameters.AddWithValue(":PRICE", PriceTb.Text)
Fcommand.Parameters.AddWithValue(":PRODUCT_ID", IdTB.Text)
Fconnection.Open()
Fcommand.ExecuteNonQuery()
Fconnection.Close()
...
Рейтинг: 0 / 0
Ошибка формирования ib-значения входящего параметра
    #40122969
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для меня это выглядит как баг. Пиши Коваленко (или чей ты там провайдер
используешь), пусть не игнорируют имена параметров, раз уж они заданы в
AddWithValue. Хотя возможно, что у тебя в этом вызове просто лишние двоеточия
из-за чего эти параметры и не связываются с теми из запроса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка формирования ib-значения входящего параметра
    #40122971
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Airball,

Переключись на это .

Там с именнованными параметрами проблем нет.

И с другими вещами тоже.

---
Я уже и забыл о существовании System.Data.OleDb :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка формирования ib-значения входящего параметра
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]