Member 12784073 Ответов: 1

Может ли кто-нибудь сказать мне, что не так с инструкцией SQL?


Private Sub FillTarefasGeral(ByVal Proc As Integer)

        MsgBox(Proc)

        Dim table As New DataTable

        Access.AddParam("@Tipo", Proc)

        Access.ExecQuery(" Select Tarefas.Id_Tarefa, Tarefas.Tarefa, Links.ID_Link As Calendar, Links.Site As Calendario, Links.Path As Link, " &
                         " Tarefas_Proc.ID, Tarefas_Proc.Tar_Título, Tarefas_Proc.Prioridade, Tarefas_Proc.[Concluída] As P_Concluida, " &
                         " Tarefas_Proc.[Data de Conclusão], SubTarefas.ID, SubTarefas.Título, SubTarefas.Prioridade, SubTarefas.[Concluída], " &
                         " SubTarefas.[Data de Conclusão], Documentos.ID_Doc As Documento, Documentos.Documento As NomeDoc, Documentos.Processo as Processo " &
                         " FROM (Links INNER JOIN Tarefas On Links.ID_Link = Tarefas.Calendar) " &
                         " INNER Join(Tarefas_Proc INNER JOIN (Documentos INNER JOIN SubTarefas On Documentos.ID_Doc = SubTarefas.Documento) " &
                         " On Tarefas_Proc.ID = SubTarefas.Tar_Origin) On Tarefas.Id_Tarefa = Tarefas_Proc.PTarefa " &
                         " Where (Documentos.Processo =" & Proc & ")")


        If NotEmpty(Access.Exception) Then MsgBox(Access.Exception) : Exit Sub


        ' Create four typed columns in the DataTable.
        table.Columns.Add("Id_Tarefa", GetType(Integer))
        table.Columns.Add("Tarefa", GetType(String))
        table.Columns.Add("Calendar", GetType(Integer))
        table.Columns.Add("Calendario", GetType(String))
        table.Columns.Add("Link", GetType(String))
        table.Columns.Add("Proc_ID", GetType(Integer))
        table.Columns.Add("Tar_Título", GetType(String))
        table.Columns.Add("Prioridade", GetType(String))
        table.Columns.Add("P_%Conclida", GetType(Double))
        table.Columns.Add("P_DataConclusão", GetType(DateTime))
        table.Columns.Add("ID_SubTar", GetType(Integer))
        table.Columns.Add("ST_Título", GetType(String))
        table.Columns.Add("ST_Prioridade", GetType(String))
        table.Columns.Add("ST_%Conclida", GetType(Double))
        table.Columns.Add("ST_DataConclusão", GetType(DateTime))
        table.Columns.Add("Documento", GetType(Integer))
        table.Columns.Add("NomeDoc", GetType(String))
        table.Columns.Add("Processo", GetType(Integer))


        For Each R As DataRow In Access.DBDT.Rows
            table.Rows.Add((R("Id_Tarefa")), (R("Tarefa")), (R("Calendar")), (R("Calendario")), (R("Link")), (R("Tarefas_Proc.ID")), (R("Tar_Título")), (R("Tarefas_Proc.Prioridade")), (R("P%Concluída]")), (R("Tarefas_Proc.[Data de Conclusão]")), (R("SubTarefas.ID,")), (R("SubTarefas.Título")), (R("SubTarefas.[% Concluída]")), (R("SubTarefas.[Data de Conclusão]")), (R("Documento")), (R("NomeDoc")), (R("Processo")))

        Next
        TarefasGeralDataGridView.DataSource = table

    End Sub


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

все, что я знаю. Я получаю сообщение msg, говорящее, что некоторые параметры не имеют значения. Заранее спасибо.

1 Ответов

Рейтинг:
0

Wendelius

Насколько я могу судить, названия столбцов не совпадают.
Например, в вашем запросе у вас есть

select .... Tarefas_Proc.ID, ....

и в более позднем коде вы пытаетесь ссылаться на него с помощью
... (R("Tarefas_Proc.ID")),..

Псевдонимы таблиц никогда не включаются в имена столбцов в результирующем наборе, поэтому правильным способом ссылки на столбец будет
... (R("ID")),..

Конечно, вы можете определить конкретные псевдонимы столбцов, если это необходимо, точно так же, как вы сделали это с некоторыми pof-столбцами