@.Kai
danke für die schnelle antwort, das kommt mir sehr entgegen
hi
@all
vielen dank erstmal für die antworten!
@waschbecken
kann ich statt MS SQL auch mySQL nutzen?
und ich bin auch kein freund von clickiClicki
da ich sehr viel datenbank abhängige anwendungen schreiben
baue ich meine forms soweit es geht dynamisch im code.
@Cord Worthmann
ich habe keineswegs vor alle anwendungen auf asp zu ändern alles wo ich z.B.
eine waage einen scanner oder andere maschinen angeschlossen habe
soll lokal bleiben
aber einige abfragen, reports oder darstellungen die auf daten einer datenbank(mySQL5, DB2) beruhen können doch meiner meinung nach besser im intranet über eine webpage abgerufen werden oder?
hallo,
ich bin am überlegen für unsere firma von .net (lokal) anwendungen auf asp.net
umzustellen z.b. wegen der neuinstallationen bei änderungen im programm
die dann auf jedem client dürchgeführt werden müssen.
hat jemand kurz lust mir zu erklären was man hard und software mäßig braucht
und wie die generelle funktionsweise und vorgehensweise ist.
helfen würde auch eine literatur empfehlung
ich glaube nicht das das möglich ist selbst wenn das müsstest du ja die ganze berichtsformatierung dynamisch zu laufzeit erstellen
hast du keine alternative?
wieviele mögliche verschieden tabellen willst du denn damit abdecken?
zum punkt update:
//command builder erstellen
OdbcCommandBuilder Commandbuilder = new OdbcCommandBuilder(Adapter);
//und dann update
Adapter.Update(DataTable);
wichtig ist das du vor dem füllen dem adapter die property
Adapter.AcceptChangesDuringFill = false; zuweisst
mit acceptchanges machst du genau das gegenteil, damit änders du den rowstate von deleted modified oder added wieder zurück
falls du dich für crystal entscheiden solltest (meiner meinung nach besser)
such einfach mal im forum nach crystal reports
dann solltest du alles nötige finden
das wurde schon einige mal im detail erklärt
diagramme --> im crystal report in der menüleiste.. crystal report - einfügen - diagramm
naturlich arbeite ich samstags, aber du hast recht (nicht in der firma) !
...is schon spät!
daran hab ich mir auch schon die zähne ausgebissen
ich hab auch keine standart möglichkeit gefunden
mein einziger vorschlag ist:
private void dataGridView1_Click(object sender, EventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 0)
{
ComboBox tb = new ComboBox();
tb.Name = "tb";
tb.Size = dataGridView1.CurrentCell.Size;
tb.Leave += new EventHandler(tb_Click);
tb.Location = new System.Drawing.Point(
dataGridView1.CurrentCellAddress.X + 40,
dataGridView1.CurrentCellAddress.Y + 20);
//add the items from the grid box to the combobox
for (int i = 0; i < comboBoxColumn.Items.Count; i++)
{
tb.Items.Add(comboBoxColumn.Items[i]);
}
this.dataGridView1.Controls.Add(tb);
}
also im prinzip beim click auf die comboboxim grid eine standard combobox (da kannst du ja reinschreiben)
darüberzulegen, alle items zu übernehmen
dann wenn die combobox wieder verlassen wird und die anzahl der intems in beiden boxen nicht mehr == ist die items ersetzen ansonsten den in der stadardbox gewählten wert auf die gridbox zu übernehmen
dabei muss mann die zur laufzeit erstellte combobox natürlich dynamisch genau über
die active zelle im gridview legen nicht wie in meinem beispiel fixe koordinaten.
vielleicht bringt dich das ja auf eine idee, mir fällt sonst auch keine andere lösung ein
nochmal interesse halber, was hast du denn mit der zeichnung vor?
ich hab damals in das panel mit pcPen unterschrieben
die bitmap dann als blob in einem byte[] aund dann in einem datatable
gespeichert und von da dann an einen crystal report übergeben
um so einen unterschriebenen bericht zu kriegen.
würde dir das auch helfen?
exakt das hab ich schin gemacht!
hab den code aber nur bei der arbeit
poste ich dir morgen früh
was du auf jeden fall machen solltest ist die zeichnung auf die picture box beschränken
hier schon mal der code
ich hab allerdings in ein panel gezeichnet nicht in eine picture box
private void panelDraw_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (Cursor.Clip == panelDraw.RectangleToScreen(panelDraw.ClientRectangle))
{
Cursor.Clip = new Rectangle(0, 0, 0, 0);
}
else
{
Cursor.Clip = panelDraw.RectangleToScreen(panelDraw.ClientRectangle);
}
}
zum verständnis;
Y soll ein arry vom typ string sein
und x die anzahl der kombiniertern werte aus dem array?
poste doch mal deinen code den du bis jeztz hast
vielleicht kann man darauf aufbauen
für read only
this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
ist doch richtig!
mit dem ausgwählten wert brauchst du ja nichts machen wenn du nicht willst
jetzt nochmal getestet so das auch die user ohne post angezeigt werden:
SELECT user.nickname, Count(post.user_id) AS Anzahlposts
FROM user LEFT JOIN post ON user.id = post.user_id
GROUP BY user.nickname, user.geloescht
HAVING (((user.geloescht)=0))
sorry das sollte natürlich heissen:
SELECT user.nickname, count(post.user_id) As Anzahlposts
from user INNER JOIN post ON user.id = post.user_id
group by user.nickname
having user.geloescht = 0
das sollte eigendlich funktionieren aber ich bau mir das mal eben nach.
ok probier mal bitte so:
SELECT user.nickname, count(post.user_id) As Anzahlposts
from user INNER JOIN name ON user.id = post.id
group by user.nickname
having user.geloescht = 0
wie wärs hiermit
SELECT nickname, sum(geposted) As summe
from user INNER JOIN name ON user.id = post.id
group by nickname
having geloescht = 0
ich glaub ich habs
mach mal diese abfrage
SELECT MSysObjects.Type, MSysObjects.Name
FROM MSysObjects
WHERE (((MSysObjects.Type)=4));
damit fragst du die access systemtabellen nach anzahl und namen der vonhandenen
tabellen ab.
dann brauchst du nur noch meit ner schleife alle durchgehen.
sorry fürchte ich kann dir nicht wirklich weiterhelfen
wenn du rauskriegst wie du die anzahl tabellen in der DB zählen kannst
bräuchtest du ja nur noch in einer for oder for each schleife
für jede tabelle einen eine select * ausführen
mein problem ist das ich nicht weiss wie du die namen oder die anzahl der tabellen einer access db zurückkriegst.
überleg mal ob es vieleicht sinn mach die auswahl in einer settingsklasse zu speichern
die kannst du dann von überall abrufen auch vom mainfrm.
sorry ich versteh nicht genau was du möchtest
was für tabellen lädst du denn?
welche datenbank?
nutzt du odbc treiber?
beschreib mal ein bischen mehr
sorry hab die ein bischen zuviel versprochen hab das programm gerade nochmal getestet der import deiner dbf datei funktioniert aber der export zu csv nicht wirklich ich hjab da grad nochmal kurz dran rumgebastelt aber das nicht wieder hingekriegt
vielleicht hilft dir der vorhanden sourcecode ja so das du das selber bauen kannst zumindest kannst du sehen das die umlaute und so richtig angezeigt werden du muss halt nur die dsn und so auf deine treiber umstellen
gruss
ach ja der code ist ziemliches chaos ich hoffe du findest da durch, aber wie gesagt das war reines testgeballer!!
ich frikel dir noch eben den mysql kram da raus damit das bei dir funktioniert
dauer eben ca ne viertel stunde.
ich hab auch nen selbsgeschrieben converter von foxpro zu csv
allerdings ziemlich viel hardcodiertes drin wae nur ne fingerübung
der liest deine datei mit umlauten in visual studio ein
interesse?
kannst du denn deine tabellenstruktur noch ändern?
das wäre wahrscheinlich am einfachsten
aha das ist mit standard SQL meiner meinung nach nicht zu machen zumindest nicht mit diese tabellenstruktur da wirst du wohl ein workaround machen müssen....
gejoint oder nicht ist doch egal das abfrage ergebnis ist doch eine tabelle
poste doch mal deine select string
damit fügst du im pronzip zwei spalten zusammen das ist doch was du möchtest oder?
kuck dir mal getter / setter methoden an
hab versucht dir meine dll anzuhängen war aber größer als 200kb schade,
die dll heisst VFPODBC.DLL und ist version 6.01.8630.01
ach ja du musst in der odbc treiber konfiguration "verzeichniss mit freien tabellen" auswählen und nicht fox pro vielleicht hilft das schon
wohin willst du denn die daten exportieren?
ich hab vor einiger zeit mal einen converter von fox pro mysql geschrieben falls du was ähnliches vorhast.
ich hab deine datei jetzt über den odbc treiber microsoft fox pro VFP (*dbf) mit access geladen und die umlaute sind alle da
womit lädst du die tabellen den und was hast du damit vor?
mmmh das sollte mit den fox pro triebern eigendlich funktionieren da die dbf dateien im ansi format lesen
kannst du vielleicht ein beispiel file posten?
das klingt ziemlich nach visual fox pro, probier die treiber mal aus
welche dbase version?
geht nicht das:
select tabelle1.group1 | tabelle2.group1 as group
was willst du denn als datasource für die combobox haben ein array ode ein datatable oder ?
ja, die einzelnen columns auch
readonly = false //?
dann bau das doch schon in deinen SQL-string mit ein
HTML:
ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>" SelectCommand="SELECT a, left(b,10), c FROM X">
mit left (spaltenname, anzZeichen) kannst du doch schon in sql den rest abschneiden
gruss
sorry das ich jetzt erst antworte hab gestern früh feierabend gemacht.
zu deinem problem, mal davon abgesehen das ich von diesen generatoren zumindest für tableadapter nicht viel halte kannst du auch dort mit variablen arbeiten
und zwar jedesmal wenn du in deinen command text ein ? einbaust fragt er dich im query generator vor ausführen der abfrage nach dem dort einzusetzenden wert.
im code kannst die diese parameter auch ansprechen.
ungefahr so: dataadapter.SelectCommand.Parameters[0].Value = deinWert;
und so weiter.
details findest du auch in der dokumentation
ich weiss nicht genau ob ich dich richtig verstanden habe aber im code kannst du doch einfach deine variable in den sql string einsetzen
bsp.:
@" SELECT
a,b,c
FROM
X
Where (x =' + this.textbox1.text + " )' ";
dann musst du das eben per hand machen
probier mal das:
erstelle einen cellstyle
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle = new System.Windows.Forms.DataGridViewCellStyle();
dataGridViewCellStyle.Format = "d"; //d= shortDate
und weise deiner Column dann diesen style zu
this.xYDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle;
ungetested.
hi,
ich denke es macht nur sinn die datensätze zu laden die anzeigen lassen oder verändern möchtest du kannst ja schon in der abfrage die tabellen so mit joins verknüpfen das du nur die daten aus verschieden tabelle läds die du auch brauchst.
hi,
ich mach das immer so das ich im generator beispielwerte einsetze
und dann nur im code mit den variablen arbeite.
hi,
klick im design modus dein datagrid an gehe ins eigenschaftenfenster
klicke neben der eigenschaft columns auf auflistung
dann klicke im fenster auf die spalte die du formatieren möchtest
dann ganz oben im fenster auf defaultCellStyle klicken
dann kannst du ganz unten bei format das kurze datum auswählen.
kuck dir mal die msdn und diesen link an http://www.aspheute.com/artikel/20001102.htm
kuck dir mal die PCSHLL32.dll an
sollte unter C:\Programme\IBM\Client Access\Emulator liegen
die ist für die remote steuerung
gruss
hi,
fülle deine daten doch vom array in ein dataset.datatable das kannst du dann wunderbar als datenquelle für deinen report nehmen oder wenn dein array immer gleich viele einträge hast kannst im report auch mit parameter feldern arbeiten
was möchtest du denn genau machen ich habe dich so verstanden das du die string für deinen constr irgendwo hinterlegst z.b. in einer settings klasse und deinen ganzen string dann von überall als eigenschaft einer klasse abrufen kannst.
oder möchtest du etwas anderes?
hi
kuck dir mal getter & setter methoden an
das solte idr helfen