#vb.net
#vb.net
Вопрос:
Я создаю приложение для имитации построения реального приложения, а не просто небольших примеров. Приложение имеет основную форму и 3 другие формы Windows для заказов, продаж и продуктов, у меня также есть одна база данных SQL на основе сервиса, которая является локальной и доступна только для приложений, эта база данных на основе сервиса содержит 3 таблицы, по одной для каждой формы. Все они хороши, работают нормально, и приложение сохраняет данные, которые я помещаю в него при запуске приложения из папки debug, но теперь мне нужно вести записи этих таблиц отдельно на листе Excel, и я понятия не имею, как это сделать.
Я узнал все, что мне нужно для создания этого приложения, из видео ниже, и я улучшаю его, насколько могу, возможно, если я недостаточно ясно выразился, это может помочь придать некоторый контекст. https://www.youtube.com/watch?v=NLs44hxV514
И вот как выглядит мое приложениеhttps://imgur.com/a/ElS6V6v
Попробовал несколько примеров, которые я нашел в Интернете, но ни один из них не сработал, большинство из них были направлены на реальные серверы SQL, а не на сервисные.
Я знаю, что это совсем не полезно, но это то, что у меня пока есть на моей кнопке экспорта.
Try
sfdProdutos.InitialDirectory = "c:"
sfdProdutos.Title = "Save your file."
sfdProdutos.ShowDialog()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
И ни капли идеи о том, как это закончить, лол.
На данный момент я пытаюсь просто сохранить ее в существующий файл Excel, потому что я знаю, что будет что-то, что усложнит мою жизнь, если я попробую все сразу, отложите это на другой день.
Чтобы вы могли понять, как я до сих пор работал с базой данных в приложении, это моя кнопка «Сохранить запись» для одной из форм
If ProductTextBox.Text = Nothing Then
ProductTextBox.Text = "unknown"
End If
If ProviderTextBox.Text = Nothing Then
ProviderTextBox.Text = "unknown"
End If
If PriceTextBox.Text = Nothing Then
PriceTextBox.Text = "unknown"
End If
If Bar_CodeTextBox.Text = Nothing Then
Bar_CodeTextBox.Text = "unknown"
End If
Try
Me.Validate()
Me.ProductsTableBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.ProdutosDataSet)
MessageBox.Show("The product has been edited.", "Information.", MessageBoxButtons.OK)
ProductTextBox.Select()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Любая помощь очень ценится!
Заранее спасибо, что прочитали все это.
Ответ №1:
Я бы использовал datatable и заполнил его из таблицы sql, после чего вы можете легко экспортировать эти данные в Excel
Dim strSql As String = "SELECT EmpCode,EmpID,EmpName FROM dbo.Employee"
Dim dtb As New DataTable
Using cnn As New SqlConnection(connectionString)
cnn.Open()
Using dt As New SqlDataAdapter(strSql, cnn)
Dt.Fill(dtb)
End Using
cnn.Close()
End Using
Используйте это для экспорта в Excel
используйте это для заполнения Данные, доступные с помощью вашего SqlDataAdapter
Dim constring As String = "Data Source=.SQL2005;Initial Catalog=Northwind;User id = sa;password=pass@123"
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand("SELECT * FROM Customers", con)
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Using dt As New DataTable()
sda.Fill(dt)
dataGridView1.DataSource = dt
End Using
End Using
End Using
End Using
Комментарии:
1. Да, я узнал об этом, но это заставило бы меня снова запускать приложение практически с нуля, а поскольку у меня пока нет знаний для создания системы предотвращения sql-инъекций, я предпочитаю использовать автономное приложение только с базой данных, подключенной к его EXE-файлу, чем сервер. Должен быть способ работать с этой базой данных на основе сервиса, верно? В противном случае, какой в этом смысл?