Edward Mergel Ответов: 2

BC30516: разрешение перегрузки не удалось, поскольку ни один доступный "элемент" не принимает такое количество аргументов.


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

Таблица баллов имеет только 2 поля (член и баллы)
Таблица участник: MemberName (текст), MemberEmail (текст), MemberPassword, MemberAvatar(путь к изображению (например: app_images/лица/"аватар имя.формат PNG)) (текст), MemberAbout(памятка), MemberCity (текст), государствами-участниками (текст), MemberCountry (текст), PatientType (текст), PatientIssues(памятка), AgreeTerms (текст), AgreeDisclaimer (текст), AgreePrivacy (текст) поля

Ничего не вызывается и не заполняет страницу. Я получаю только сообщение о синтаксической ошибке.

Что я уже пробовал:

Dim pointDs As OleDbDataAdapter
Dim con As OleDbConnection
Dim ds As New DataTable
Dim mymemDs As OleDbDataAdapter

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    con = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0 ;data source=" & Server.MapPath("app_data/SimpleQSet.mdb") & ";")
    If Request.QueryString("mem","sitemem") <> "" Then
        pointDs = New OleDbDataAdapter("select * from Points where Member='" & Request.QueryString("mem") & "'", con)
        mymemDs = New OleDbDataAdapter("select * from Member where PatientType='" & Request.QueryString("sitemem") & "'", con)
    ElseIf Session("member","sitemember") <> "" Then
        pointDs = New OleDbDataAdapter("select * from Points where Member='" & Session("member") & "'", con)
        mymemDs = New OleDbDataAdapter("select * from Member where PatientType='" & Session("sitemember") & "'", con)
    Else
        Response.Redirect("Mainforum.aspx")
        Exit Sub
    End If

    pointDs.Fill(ds)

    mname.Text = ds.Rows(0)(0)
    mPoints.Text = ds.Rows(0)(1)

    mymemDs.Fill(ds)

    myavatar.ImageUrl.ToString()
    mypatient.Text.ToString()
    myissue.Text.ToString()

End Sub


Кодирование Страницы Профиля
<div class="style10">
    <b style="text-align: left">Member Profile :</b></div>
<table style="width:100%;">
    <tr>
        <td class="style9">
            Name</td>
        <td align="left">
            <b>
            <asp:Label ID="mname" runat="server"></asp:Label>
            </b>
        </td>
    </tr>
    <tr>
        <td class="style9">
            Points</td>
        <td align="left">
            <b>
            <asp:Label ID="mPoints" runat="server"></asp:Label>
            </b>
        </td>
    </tr>
    <tr>
        <td class="style9">
            Patient Type</td>
        <td align="left">
            <b>
            <asp:Label ID="mypatient" runat="server"></asp:Label>
            </b>
        </td>
    </tr>
    <tr>
        <td class="style9">
            My Avatar</td>
        <td align="left">
            <b>
            <asp:Image ID="myavatar" runat="server" AlternateText="Avatar" />
            </b>
        </td>
    </tr>
    <tr>
        <td class="style9">
            My Issues</td>
        <td align="left">
            <b>
            <asp:Label ID="myissue" runat="server"></asp:Label>
            </b>
        </td>
    </tr>
</table>

Graeme_Grant

"Я получаю только сообщение об ошибке синтаксиса." - Куда? Что именно там написано? Нажмите на виджет "улучшить вопрос" и добавьте туда сообщение об ошибке.

FWIW, "синтаксическая ошибка" означает, что у вас есть синтаксическая ошибка в вашем VB - коде-то есть: вы неправильно закодировали строку кода, поэтому компилятор жалуется перед запуском приложения. Сначала тебе нужно это исправить.

2 Ответов

Рейтинг:
9

Graeme_Grant

Цитата:
BC30516: разрешение перегрузки не удалось, поскольку ни один доступный "элемент" не принимает такое количество аргументов.

Согласно документации Microsoft ([^]):
Цитата:
Вы вызвали перегруженный метод, но компилятор обнаружил две или более перегрузки со списками параметров, в которые может быть преобразован ваш список аргументов, и он не может выбрать один из них.

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


Рейтинг:
2

Patrice T

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL Injection-руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL-OWASP[^]