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, 5331 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
Ähnliche Inhalte
Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Server-Hardware
Netzwerk mit mehreren PoE-Switchen (7)

Frage von kluska zum Thema Server-Hardware ...

Exchange Server
gelöst Exchange 2013 dynamische verteilerliste mit mehreren recipientfiltern erstellen (8)

Frage von blackhawk17 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Hardware
Laptop ins Salzwasser gefallen (18)

Frage von Marcel94 zum Thema Hardware ...

Switche und Hubs
LAG zwischen Cisco SG300 und Dlink DGS1100 herstellen - wie? (13)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

CPU, RAM, Mainboards
Hardware Fragen (12)

Frage von xaver-2 zum Thema CPU, RAM, Mainboards ...