Abfrage via ODBC: Programm hängt sich auf

16/04/2008 - 11:34 von Michael Warlich | Report spam
Hallo zusammen!

Ich habe eine Frage zu ODBC.

Ich habe eine Abfrage mit einem JOIN... am besten zeig ich euch erstmal
den Code:

[CODE]
odbccon = New OdbcConnection("dsn=ODBC5_WWS")
odbccon.Open()

sql = "SELECT a.a_nummer, a.a_vertnr, a.a_vertnr2,
a.a_kostentraeg, aus.AZUS_AFREIFELD4 "
sql = sql + "FROM Auftrag a INNER JOIN auftzus aus on
a.a_nummer = aus.azus_nummer"

Befehl = New OdbcCommand(sql, odbccon)
Befehl.ExecuteNonQuery()

erg = Befehl.ExecuteReader

BindingSource1.DataSource = erg
DataGridView1.DataSource = BindingSource1

odbccon.Close()
[/Code]

Wenn ich das starte bleibt er immer bei "BindingSource1.DataSource =
erg" hàngen. also er stürzt nicht direkt ab, sondern braucht einfach
EWIG... bzw nach 20 mins habe ich es dann sein lassen und abgebrochen.
Wenn ich die abfrage einfach ohne das Join mache, also die andere
Tabelle weg lasse dann geht es ratz fatz... was kann das sein? Meint ihr
wirklich das die Tabelle mit 13.000 Datensàtzen einfach zu groß ist?
WEnn ich die selber Abfrage in Access mache (die Tabellen mit ODBC
verknüpft) hab ich die Antwort auch sofort.

Was kann ich machen??

LG
Michael
 

Lesen sie die antworten

#1 Elmar Boye
16/04/2008 - 11:50 | Warnen spam
Michael Warlich schrieb:
Hallo zusammen!

Ich habe eine Frage zu ODBC.

Ich habe eine Abfrage mit einem JOIN... am besten zeig ich euch erstmal
den Code:

[CODE]
odbccon = New OdbcConnection("dsn=ODBC5_WWS")
odbccon.Open()

sql = "SELECT a.a_nummer, a.a_vertnr, a.a_vertnr2,
a.a_kostentraeg, aus.AZUS_AFREIFELD4 "
sql = sql + "FROM Auftrag a INNER JOIN auftzus aus on a.a_nummer
= aus.azus_nummer"

Befehl = New OdbcCommand(sql, odbccon)
Befehl.ExecuteNonQuery()

erg = Befehl.ExecuteReader

BindingSource1.DataSource = erg
DataGridView1.DataSource = BindingSource1

odbccon.Close()
[/Code]

Wenn ich das starte bleibt er immer bei "BindingSource1.DataSource =
erg" hàngen. also er stürzt nicht direkt ab, sondern braucht einfach
EWIG... bzw nach 20 mins habe ich es dann sein lassen und abgebrochen.



Eine BindingSource kann mit einem ExecuteReader nichts anfangen -
genausowenig wie das vorausgehende ExecuteNonQuery einen Nàhrwert hat.
Verwende z. b. eine DataTable um die Ergebnisse anzuzeigen.
Das könnte aus dem Stegreif wie folgt aussehen:

Dim auftragTable As New DataTable
Using odbccon As New OdbcConnection("dsn=ODBC5_WWS")
odbccon.Open()

Dim auftragAdapter As New OdbcDataAdapter( _
"SELECT a.a_nummer, a.a_vertnr, a.a_vertnr2, a.a_kostentraeg, aus.AZUS_AFREIFELD4 " & _
"FROM Auftrag a INNER JOIN auftzus aus on a.a_nummer = aus.azus_nummer", _
odbccon)
auftragAdapter.MissingMappingAction = MissingMappingAction.Passthrough
auftragAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

auftragAdapter.Fill(auftragTable)

odbccon.Close()
End Using

BindingSource1.DataSource = auftragTable
DataGridView1.DataSource = BindingSource1

Mehr dazu:
<URL:http://msdn2.microsoft.com/de-de/li...1.aspx>
"DataAdapter' (ADO.NET)"

Gruß Elmar

Ähnliche fragen