Member 12490691 Ответов: 1

Многопользовательский логин - какой пользователь добавил файл


- Эй! Итак, у меня есть приложение, где в основном я могу перетащить файл в кнопку, а затем информация об этом файле будет отображаться на этикетках. После этого эта информация будет отправлена в таблицу из моей базы данных. Но теперь я создал форму входа в систему, где я могу выбрать, хочу ли я войти в систему с администратором и обычным пользователем. Здесь я построил новую таблицу для пользователей, где я получил (ID, TypeUser, Password), то, что я хочу достичь сейчас, - это после того, как я войду в систему с типом пользователя и добавлю заполнение, приложение распознает, какой пользователь добавил этот файл, и запишет его в мою базу данных.

Это обе таблицы:

файл информации - именем
Тип файла
Размер файла
Созданный
Модифицированный
Доступ
PcName

А другой стол

пользователи - идентификатор
TypeUser
Пароль

Если пользователи войдут в систему с учетной записью администратора и добавят файл, он будет сохранять запись следующим образом:

Имя Файла - GTA.exe
Тип файла -. exe
Размер файла-24145
Создано-01/06/2015
Изменено-01/06/2015
Доступ-01/06/2015
PcName - MYMACHINE-PC
TypeUser - Administrador
(Это будет показано на DataGridView)

Это не возвращает то, что я хочу, потому что он говорит, что этот файл существует, и я не могу понять, почему.

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

Я попытался сделать вставку
INSERT INTO infofile(Filename, Filetype, Filesize, Created, Modified, Access, PcName, TypeUser)
                                        VALUES(@Filename, @Filetype, @Filesize, @Created, @Modified, @Access, @PcName, @TypeUser)"

Я попытался сделать запрос с помощью INNER JOIN
SELECT infofile.Filename, users.TipoUtilizador
FROM infofile
INNER JOIN users
ON infofile.Filename=users.Filename
ORDER BY infofile.Filename


Это код, в котором отображается "этот файл уже существует!".

Sub AddFile()
        SQLCon = New SqlConnection
        SQLCon.ConnectionString = "....."
        Dim sentRecycle As Boolean = SentToRecycle(MeuFicheiro.ToString)
        Try
            Query = "INSERT INTO infofile(Filename, Filetype, Filesize, Created, Modified, Access, PcName, TypeUser)
                                        VALUES(@Filename, @Filetype, @Filesize, @Created, @Modified, @Access, @PcName, @TypeUser)"
            SQLCon.Open()
            SqlCmd = New SqlCommand(Query, SQLCon)

            With SqlCmd.Parameters
                .Add("@Filename", SqlDbType.Char).Value = lblName.Text
                .Add("@Filetype", SqlDbType.Char).Value = lblType.Text
                .Add("@Filesize", SqlDbType.Int).Value = lblSize.Text
                .Add("@Created", SqlDbType.Char).Value = lblCreated.Text
                .Add("@Modified", SqlDbType.Char).Value = lblModify.Text
                .Add("@Access", SqlDbType.Char).Value = lblAccess.Text
                .Add("@PcName", SqlDbType.Char).Value = nomePcLbl.Text
                .Add("@MoveRecycle", SqlDbType.Char).Value = sentRecycle
            End With
            Carregar()

            SqlCmd.ExecuteNonQuery()

            SQLCon.Close()
        Catch ex As Exception
            MsgBox("Ficheiro existente!")
            ClearFields()
        End Try
    End Sub

CHill60

Так в чем же заключается ваш реальный вопрос или проблема?

Kats2512

нет, мы не знаем, что подразумевается под этим. Пожалуйста, используйте ссылку "улучшить вопрос" и уточните, в чем именно вы на самом деле ищете помощь.

Member 12490691

Я только что ее отредактировал. Извиняюсь

Member 12490691

Уже отредактировал вопрос

CHill60

Какая строка кода говорит: "этот файл существует"? Ни один из кодов, которые вы опубликовали до сих пор!

CHill60

Итак, вы говорите, что получаете сообщение "Ficheiro existente!", а не фактическое исключение "файл уже существует". Вместо того чтобы выводить собственное сообщение об ошибке попробуйте заменить его MsgBox("Ficheiro existente!") с MsgBox(e.ToString()) так что мы узнаем, что такое фактическое исключение

vagelis1

Здесь проблема заключается в чем-то другом, возможно, в sql-соединении или ошибке в lblsize значений параметров.Текст " кажется подозрительным.

1 Ответов

Рейтинг:
0

CHill60

Вы запутываете фактическое исключение, предполагая, что любое вызванное исключение будет вызвано тем, что файл уже существует.
Вместо того чтобы выводить собственное сообщение об ошибке попробуйте заменить его MsgBox("Ficheiro existente!") с MsgBox(e.ToString()) так что мы узнаем, что такое фактическое исключение.

Я не могу вспомнить точную формулировку фактического исключения здесь (и я не собираюсь утруждать себя воссозданием всего), однако посмотрите на

Query = "INSERT INTO infofile(Filename, Filetype, Filesize, Created, Modified, Access, PcName, TypeUser)
                            VALUES(@Filename, @Filetype, @Filesize, @Created, @Modified, @Access, @PcName, @TypeUser)"

но когда вы добавляете параметры, у вас есть
.Add("@MoveRecycle", SqlDbType.Char).Value = sentRecycle

Вы не предоставляете значение для @TypeUser, и это приведет к ошибке.