Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

CSharp Anzeigeproblem mit mehreren Tabellen im DataGrid

Frage Entwicklung VB for Applications

Mitglied: Beowolf

Beowolf (Level 1) - Jetzt verbinden

13.10.2008, aktualisiert 21.10.2008, 5326 Aufrufe, 1 Kommentar

Hallo Zusammen,

ich befinde mich gerade Daten aus einer Access Datenbank auszulesen und zu druckern. Das Druckerklasse stammt noch von meinem Vorgänger, so dass ich diese nicht angefasst habe. Der Inhalt bzw. das Gesamte Datagrid wird an diese Klasse übergeben und kann somit gedruckt werden.
Zu meinem Problem:
Meine Access Datenbank besteht aus 3 Tabellen. Teilweise lese ich mehrere Tabellen in das Datagrid ein. Funktioniert alles wunderbar, solange ich nicht drucke. Wurde der Inhalt einer Tabelle ausgedruckt, sind die Abfragen anderen Abfragen nicht mehr vollständig.
Aufgrund der Spaltenbreite nutze ich 5 Spalten pro Abfrage. Eine Abfrage kann mehrere Tabellen beinhalten.

Hier mal der Quelltext eines Teiles der Abfragen:

Abfrage Inventar + Raum
01.
         
02.
private string sqlueb = null; 
03.
private DataSet dsueb = null; 
04.
private OleDbConnection conueb = null; 
05.
private DataTable tblueb; 
06.
 
07.
private void button3_Click_1(object sender, EventArgs e) 
08.
09.
sqlueb = "SELECT Raum.Raum, Inventar.InvNr, Inventar.Bezeichnung, Inventar.Anzahl, Inventar.KSt FROM enthaelt, Inventar, Raum WHERE enthaelt.RaumID=Raum.Nr and enthaelt.Inventarnummer=Inventar.InvNr AND Inventar.gelöscht = 'xxx' ORDER BY Raum.Raum;"; 
10.
// FillDataGrid(); 
11.
try 
12.
13.
conueb = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Inventur.mdb"); 
14.
OleDbDataAdapter adapterueb = new OleDbDataAdapter(sqlueb, conueb); 
15.
dsueb = new DataSet(); 
16.
tblueb = new DataTable(); 
17.
conueb.Open(); 
18.
adapterueb.Fill(dsueb); 
19.
conueb.Close(); 
20.
dataGrid.DataSource = dsueb.Tables[0]; 
21.
dataGrid.Font = new Font("Verdana", 8); 
22.
23.
catch (Exception ex) 
24.
25.
Console.WriteLine(ex.Message); 
26.
27.
dataGrid.CaptionText = "Übersicht"; 
28.
} 
Abfrage Raum
01.
private string sqlraum = null; 
02.
private DataSet dsraum = null; 
03.
private OleDbConnection conraum = null; 
04.
 
05.
private void btn_Raum_Click(object sender, EventArgs e) 
06.
07.
sqlraum = "SELECT Raum.Nr, Raum.Raum, Raum.x, Raum.y, Raum.z FROM Raum ORDER BY Raum.Raum;"; 
08.
//FillDataGrid(); 
09.
try 
10.
11.
conraum = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Inventur.mdb"); 
12.
OleDbDataAdapter adapterraum = new OleDbDataAdapter(sqlraum, conraum); 
13.
dsraum = new DataSet(); 
14.
conraum.Open(); 
15.
adapterraum.Fill(dsraum); 
16.
conraum.Close(); 
17.
dataGrid.DataSource = dsraum.Tables[0]; 
18.
dataGrid.Font = new Font("Verdana", 8); 
19.
20.
catch (Exception ex) 
21.
22.
Console.WriteLine(ex.Message); 
23.
24.
dataGrid.CaptionText = "Räume"; 
25.
}
Abfrage Inventar
01.
   
02.
private string sqlinv = null; 
03.
private DataSet dsinv = null; 
04.
private OleDbConnection coninv = null; 
05.
 
06.
private void btn_Inventar_Click(object sender, EventArgs e) 
07.
08.
sqlinv = "SELECT Inventar.InvNr, Inventar.Bezeichnung, Inventar.Anzahl, Inventar.KSt, Inventar.Bemerkungen FROM Inventar Where Inventar.gelöscht = 'xxx' ORDER BY InvNr;"; 
09.
//FillDataGrid(); 
10.
 
11.
try 
12.
13.
coninv = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Inventur.mdb"); 
14.
OleDbDataAdapter adapterinv = new OleDbDataAdapter(sqlinv, coninv); 
15.
dsinv = new DataSet(); 
16.
coninv.Open(); 
17.
adapterinv.Fill(dsinv); 
18.
coninv.Close(); 
19.
dataGrid.DataSource = dsinv.Tables[0]; 
20.
 
21.
dataGrid.Font = new Font("Verdana", 8); 
22.
23.
catch (Exception ex) 
24.
25.
Console.WriteLine(ex.Message); 
26.
27.
 
28.
dataGrid.CaptionText = "Inventar"; 
29.
}
Alle Abfragen funktionieren, solange nicht gedruckt wird. Nachdem Drucken der Tabelle Inventar werdem bei der Abfrage Inventar + Raum nur noch die 4 Spalten angezeigt (Raum fehlt) und in der Abfrage Raum wird entweder nichts mehr oder nur die Spalte Raum angezeigt.

Das DataSet enthält jedoch die richtigen Werte, schreibt sie jedoch nicht ins Datagrid. Vor dem Drucken werden alle Ergebnisse korrekt angezeigt.

Hinweis:
  • Ich verwende ein DataGrid und kein DataGridView
  • Ein DataGridView kann nicht an die Druckerklasse übergeben werden.

Kann mir irgendjemand sagen, wo mein Fehler liegt?

Vielen Dank im vorraus.

Gruß Steffen

##Edit: Format angepasst
Mitglied: Beowolf
21.10.2008 um 09:08 Uhr
Hallo Zusammen,

Vielen Dank an alle.
Ich habe es hinbekommen, das Zauberwort heißt TableStyles.
Für alle die mal vor dem selben Problem stehen:
Bei Abfragen unterschiedlicher Tabellen und Spalten werden im Datagrid die Tablestyles angepasst. Bei einer Abfrage einer neuen Spalte ist diese nicht im tableStyle enthalten und wird somit nicht angezeigt.
Ein
01.
dataGrid.TableStyles.Clear();
vor jeder Abfrage behebt das Problem, da die TableStyles jedesmal neu geschrieben werden

Gruß Steffen
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
gelöst 1 Port in mehreren VLANs? (7)

Frage von mario87 zum Thema LAN, WAN, Wireless ...

C und C++
gelöst Fehler bei if (Csharp) (7)

Frage von homeroma zum Thema C und C ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...