Есть готовая база MS Access, в ней готовые запросы, можно ли средствами .NET посмотреть эти запросы в виде SQL, или выполнить их. Если можно, примерчик на VB. Спасибо.
Здравствуйте, RendeRR, Вы писали:
RRR>Есть готовая база MS Access, в ней готовые запросы, можно ли средствами .NET посмотреть эти запросы в виде SQL, или выполнить их. Если можно, примерчик на VB. Спасибо.
Это легко сделать, подключив ADOX.
Здравствуйте, Stewe, Вы писали:
S>Здравствуйте, RendeRR, Вы писали:
RRR>>Есть готовая база MS Access, в ней готовые запросы, можно ли средствами .NET посмотреть эти запросы в виде SQL, или выполнить их. Если можно, примерчик на VB. Спасибо. S>Это легко сделать, подключив ADOX.
Здравствуйте, RendeRR, Вы писали:
RRR>Если можно примерчик, хотя бы куда копать...
Там есть объект Catalog, у него коллекция Views (это и есть сохраненные запросы). У View есть св-во Command — это объект ADODB.Command, у которого есть св-во CommandText. Это оно и есть.
ЗЫ: Написал по памяти, так что за правильность названия свойств не ручаюсь.
"RendeRR" <33367@users.rsdn.ru> schrieb im Newsbeitrag news:1051623@news.rsdn.ru... > Здравствуйте, Stewe, Вы писали: > > S>Здравствуйте, RendeRR, Вы писали: > > RRR>>Есть готовая база MS Access, в ней готовые запросы, можно ли средствами .NET посмотреть эти запросы в виде SQL, или выполнить их. Если можно, примерчик на VB. Спасибо. > S>Это легко сделать, подключив ADOX. > > Если можно примерчик, хотя бы куда копать...
Напр. так:
Private Sub Button8_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button8.Click
cnn = New ADODB.Connection
With cnn
.ConnectionString = "provider=microsoft.jet.oledb.4.0;"
.ConnectionString &= "data source=" & dbName.Text & ";"Try
.Open()
Catch ex As Exception
MsgBox("Connection: Open-Error" & vbCrLf & ex.Message)
End Try
End With
cat = New ADOX.Catalog
cat.ActiveConnection = cnn
' databaseWith cat
For Each v As ADOX.View In .Views
Trace.Write("---- " & v.Name & vbNewLine)
Trace.WriteLine(CType(v.Command, ADODB.Command).CommandText)
Next
End With
End Sub
Здравствуйте, Stewe, Вы писали:
S>Там есть объект Catalog, у него коллекция Views (это и есть сохраненные запросы). У View есть св-во Command — это объект ADODB.Command, у которого есть св-во CommandText. Это оно и есть.
Все правильно. НО! кроме Views есть еще и Procedures — это типа хранимые процедуры, но из опыта могу сказать что Access не видит разницу между Views и Procedures (или я не прав?..), так что можно считать что в данном случае это одно и то же с разным названием.
PF>"RendeRR" <33367@users.rsdn.ru> schrieb im Newsbeitrag news:1051623@news.rsdn.ru... >> Здравствуйте, Stewe, Вы писали: >> >> S>Здравствуйте, RendeRR, Вы писали: >> >> RRR>>Есть готовая база MS Access, в ней готовые запросы, можно ли средствами .NET посмотреть эти запросы в виде SQL, или выполнить их. Если можно, примерчик на VB. Спасибо. >> S>Это легко сделать, подключив ADOX. >> >> Если можно примерчик, хотя бы куда копать...
PF>Напр. так:
PF>
PF> Private Sub Button8_Click(ByVal sender As System.Object, _
PF> ByVal e As System.EventArgs) Handles Button8.Click
PF> cnn = New ADODB.Connection
PF> With cnn
PF> .ConnectionString = "provider=microsoft.jet.oledb.4.0;"
PF> .ConnectionString &= "data source=" & dbName.Text & ";"
PF> Try
PF> .Open()
PF> Catch ex As Exception
PF> MsgBox("Connection: Open-Error" & vbCrLf & ex.Message)
PF> End Try
PF> End With
PF> cat = New ADOX.Catalog
PF> cat.ActiveConnection = cnn
PF> ' database
PF> With cat
PF> For Each v As ADOX.View In .Views
PF> Trace.Write("---- " & v.Name & vbNewLine)
PF> Trace.WriteLine(CType(v.Command, ADODB.Command).CommandText)
PF> Next
PF> End With
PF> End Sub
PF>
PF>Peter
Спасибо за код — работает отлично, но он возвращает только запросы на выборку и то, только те, где не требуется вводить значения параметров. Как быть с остальными? И ещё вопрос: в результате запроса имеем таблицу, можно ли узнать заголовки полей этой таблицы? Ещё раз спасибо.