2012-06-04 2 views
0

Я считаю себя очень терпеливым парнем с целым множеством намерений, чтобы заставить все работать, скажем, программу, над которой я работаю. Тем не менее, я чувствую, что я трачу драгоценное время, которое мог бы использовать, чтобы на самом деле получить знания в чем-то, а не удариться головой о стену, ничего не делая. ТАК .. Я собираюсь притвориться, что 11 часов, которые я провел сегодня, пытаясь исправить эту проблему, не пропали даром, пока я не смог ее исправить. Я новичок в базах данных и работаю над программой базы данных. Это было написано на vb6, и я пытался переписать его на vb.net. Я полностью избавил программу от всех ненужных причудливых аддонов, и теперь у меня есть необходимый код для ее запуска. Программа восстанавливает записи, но не заполняет эти записи на datagrid. И да, я пытался найти помощь по другим сообщениям и поисковым запросам Google, но мне не удалось найти решение для меня.DataGrid не отображает набор данных/записей

form1

Imports ADS_SQL_TEST_VBNET 
Public Class Form1 

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
Module1.Main() 
End Sub 

Public Sub cmdSQLBound_Click() 
sWhichDataType = "SQL" 
Call SetGridSize("SQL Table Bound.") 
End Sub 

Public Sub optYes01ph_Click() 
BuildTable()   'sets sFields and sQuery 
cmdSQLBound_Click() 
End Sub 

End Class 

module1

Imports System.Data 
Imports System.Data.SqlClient 
Imports ADS_SQL_TEST_VBNET.Form1 
Imports ADS_SQL_TEST_VBNET.Class1 

Public Module Module1 

Public rs As ADODB.Recordset 
Public db As ADODB.Connection 

Public dgvDataGrid As DataGridView 
Public DataGridRef As New DataGridView 
Public sWhichDataType, sSource, sTable, sFields, sQuery, sFilter, sOrderBy, sSelectedIndex, sStoreId  
Public lblCount As Object 
Public Ctrl1, Ctrl2, Freq, Overhead As Decimal 
Public l, x As Integer 
Public A, I As Long 


Public Sub Main() 

    Form1.optYes01ph_Click() 

End Sub 


Public Sub BuildTable() 
    If sTable = "yes01ph" Or sTable = "" Then 
     sTable = "yes01ph" 
     sFields = "store_id,control_no,first_name,last_name,company,address,city,State,zip,phone,total,stat_code,Year,make_id,model_id,engine_id,contact,phone1,phone2,phone3,phone4,invoice_no,ready_proc,summary,note" 
     sOrderBy = "control_no" 
    Else 
     sFields = "store_id,ml_id,first_name,last_name,company,address,city,state,zip,phone,last_upd,address2,phone2,ref_count,comments,fobs_key,quest,lockedby,rmte_stat,serv_upd,serv_id,psm_use,psm_points" 
     sOrderBy = "ml_id" 
    End If 
    BuildFilter() 
End Sub 

Public Sub BuildFilter() 
    sFilter = " AND control_no > 1 AND control_no < 500000" 
    BuildQuery() 
End Sub 

Public Sub BuildQuery() 

    sQuery = "SELECT " & sFields & " FROM " & sTable & " WHERE Store_ID Like 'XXX' " & sFilter & " Order By " & sOrderBy 
    sQuery = Replace(sQuery, "'XXX'", "'" & Trim(UCase("250")) & "'") 
End Sub 



Public Sub SetGridSize(ByVal sMessage As String) 

    Dim lblTableType As String 
    lblTableType = " " & sMessage 
    Form1.dgvDataGrid.Text = "Data populated using: " & UCase(sMessage) 

    DataGridRef.ColumnCount = 99 
    DataGridRef.RowCount = 1 

    DataSetRef.LoadDataBound() 
End Sub 
End Module 

Class1

Public Class Class1 

Public Sub LoadDataBound() 

rs = GetData() 
If Not rs.EOF Then 
    dgvDataGrid.DataSource = rs '  Bind the Datagrid to the recordset 
    dgvDataGrid.Refresh() 
Else 
    MsgBox("No Records Found in DataGrid!") 
End If 
End Sub 

Public Function GetData() As ADODB.Recordset 
sWhichDataType = UCase(Trim(sWhichDataType)) 

sSource = "development" 
GetData = OpenSQL() 
End Function 

Public Function OpenSQL() As ADODB.Recordset 
db = New ADODB.Connection : rs = New ADODB.Recordset ' Initialize Connection object & RecordSet object 

With db 
    .CursorLocation = ADODB.CursorLocationEnum.adUseClient 
    .Mode = ADODB.ConnectModeEnum.adModeReadWrite 
    .ConnectionString = "Provider=SQLOLEDB.1;Password=pacesql;Persist Security Info=True;User ID=sa;Initial Catalog=speedwrench;Data Source=" & sSource 
    .Open() ' "Provider=SQLOLEDB.1;Data Source=development", "sa", "pacesql", -1 
End With 

OpenSQL = db.Execute(sQuery) 
End Function 

End Class 

Я думаю, что проблема заключается в LoadDataBound() Sub рутинных, но я не могу сказать наверняка, так как Я сам не смог это исправить. Большое вам спасибо, кто бы ни потратил время, чтобы прочитать все это, и извините, если он в настоящее время неаккуратен и загружен неиспользуемыми методами или vars ... Я полностью BUTCHERED эту вещь, пытаясь заставить ее работать.

+0

Я думаю, что вы используете ADO вместо ADO.NET. Попробуйте привязать Datatable вместо набора записей – SSS

ответ

1

Я думаю, проблема в том, что вы используете ADO, а не ADO.NET.

У меня нет времени на разработку кода, но, возможно, вам стоит начать с чего-то, что работает. Это должно вытащить некоторые данные из вашей базы данных и заполнить datagridview. Вам нужно изменить строку подключения и таблицы/имена полей и т.д., конечно:

Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click 
    Dim strCnn As String = "Data Source=sqlservername;Timeout=10;Database=databasename;Trusted_Connection=no;User ID=userid;Password=password;" 
    Using cnn As New SqlConnection(strCnn) 
     cnn.Open() 
     Dim strSql As String = "SELECT * FROM Tablename" 
     Dim dtb As New DataTable 
     Using dad As New SqlDataAdapter(strSql, cnn) 
     dad.Fill(dtb) 
     End Using 
     'now hide all the columns except the ones we want to show' 
     dgv.AutoGenerateColumns = False 'dgv is the name of the datagridview' 
     Dim intColIndex As Integer 
     intColIndex = dgv.Columns.Add("Field1", "Field 1") 'aliases' 
     dgv.Columns(intColIndex).DataPropertyName = "F1" 'column name in database' 
     intColIndex = dgv.Columns.Add("Field3", "Field 3") 'aliases' 
     dgv.Columns(intColIndex).DataPropertyName = "F3" 'column name in database' 
     'now bind' 
     dgv.DataSource = dtb 
    End Using 
    End Sub 

О, вы будете нуждаться в

Imports System.Data 
Imports System.Data.SqlClient 

в верхней части исходного кода для формы.

Смежные вопросы