Új hozzászólás Aktív témák
-
bpx
őstag
válasz Vasinger! #1551 üzenetére
static void Main(string[] args)
{
int i;
string s = "K ov ác s Kálmán, 9999 Budapest, Rigó út 41.";
// a bemenet három részre bontható, melyeket a ", " karaktersorozat (1 vessző és 1 space) határol
string[] ss = s.Split(new string[] { ", " }, StringSplitOptions.None);
// első rész: vezetéknév + keresztnév
// feltesszük hogy a keresztnév egyben van, tehát az utolsó space után jön, így azt kell keresni
i = ss[0].LastIndexOf(' ');
// vezetéknév, space-eket kicseréli üres stringre, nagybetűs
Console.WriteLine(ss[0].Substring(0, i).Replace(" ", "").ToUpper());
// keresztnév, nagybetűs
Console.WriteLine(ss[0].Substring(i + 1).ToUpper());
// középső rész: irányítószám város (közöttük szóköz)
string[] cim1 = ss[1].Split(' ');
Console.WriteLine("{0} {1}", cim1[0], cim1[1]);
// utolsó rész, három részből áll: név típus házszám.
// felbontható három részre, a középső rész figyelmen kívül hagyható, helyette UTCA írható
string[] cim2 = ss[2].Split(' ');
Console.WriteLine("{0} UTCA {1}", cim2[0].ToUpper(), cim2[2]);
}mivel nincs valami pontosan specifikálva a feladat, a minimumra törekedtem, csak azt csináltam meg, amit említettél, és csak olyan bemenetre működik, amit példaként írtál (space lehet a vezetéknévben)
minimális változás a bemeneten, és már nem is működik, legyen vele valami dolgod neked is
(gondolok itt ilyenre pl. hogy vessző után nincs space, vagy az utca neve több tagból áll, pl. Petőfi Sándor utca 1.) -
ArchElf
addikt
Nevet regex-el könnyebb szétszedni, ha feltételezzük, hogy az összes név nagybetűvel kezdődik:
Regex:
Kov ács Lá szl ó -> Kovács László
Ád ámk a Ö dö n -> Ádámka Ödön
Sc hä ffer Brü n hil da Kl ár a -> Schäffer Brünhilda KláraKód: http://pastebin.com/FT9qQg3m
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
ArchElf
addikt
Két BindingSource kell, az első a BindingNavigator-nak (és a TextBox-oknak), a második pedig a GridView-nak. Az első BindingSource CurrentItemChanged eseményét pedig ehhez hasonlóan kell kitölteni (ha adatbázisról van szó):
private void bindingSource1_CurrentItemChanged(object sender, EventArgs e)
{
DataRowView drv = bindingSource1.Current as DataRowView;
bindingSource2.Filter = string.Format("KategoriaAzonosito = {0}", drv.Row["KategoriaAzonosito"].ToString());
}AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
sonar
addikt
Sziasztok
VB2k8-ban hogyan hívok meg tárolt eljárást?
Már egy ideje googlizok, de nem igazán találok épkézláb mintát.
Ha esetleg vkinek lenne, nagyon megköszönném!A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
ArchElf
addikt
Én általában leprogramozom a dolgot a System.Data.SqlClient-en keresztül.
// saját függvény, de akár fixen is meg lehet adnistring
cs = GetConnectionString("testConnectionString");
using(SqlConnection con = new SqlConnection())
{
con.ConnectionString = cs;
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
//Beállítani, hogy a Command SP legyen
cmd.CommandType = CommandType.StoredProcedure;
//SP neve
cmd.CommandText = "LastSessionPage";
//Paraméterek hozzáadása
cmd.Parameters.Add(new SqlParameter("SID", SessionID));
//Return Value (vagy akár out) is paraméterben használandó
SqlParameter pret = new SqlParameter("RETURN_VALUE", SqlDbType.Int);
pret.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(pret);
cmd.ExecuteNonQuery();
rval = Convert.ToInt32(pret.Value);
}
}Ha datasetet ad vissza a SP, akkor nyugodtan lehet ExecuteReaderrel indítani a cmd-t, és SqlDataReaderrel olvasni. A fenti esetben csak a "poén" kedvéért paraméterben jön vissza a visszatérési érték, ha select-tel egy értéket ad ki (aggregűációnál, mint pl itt), akkor nem kell vacakolni a Return paraméterrel, simán ExecuteScalar-ral kell futtatni a parancsot.
AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
j0k3r!
senior tag
hello!
a tegnapi utbaigazitas utan sikerult elorebb haladnom, de meg most sem tokeletes.
kod - eddig jutottam, de a CurrentItemChanged esemeny nalam valahogy nem akar mukodni, pedig letezik.
ha a kikommentelt reszt is futtatom, akkor kiirja az 1-es KategoriaAzonositohoz tartozo termekeket, szoval a szures jo. probakent feldobtam egy textboxot(TextBox5), de nem sok hatassal van ra a CurrentItemChanged esemeny.
valakinek valami otlet?
elore is koszonomsome men just wanna watch the world burn...
-
ArchElf
addikt
Meghívja az eseményt? Ha nem akkor lehet, hogy nem adtad hozzá az eseménykezelőt...
bs1.CurrentItemChanged += new System.EventHandler(bs1_CurrentItemChanged);Amúgy a szövegdobozoknál:
....Enable = False; helyett legyenek inkább ....ReadOnly = True;-k, úgy kijelölhető benne a szöveg, de nem szerkeszthető.Ja, és használj inkább breakpointokat a debugolásra, ne ilyen
textBox5.Text = "aasdasdasdsa"; textboxokatAE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
j0k3r!
senior tag
válasz ArchElf #1561 üzenetére
koszonom ismet
debugolni meg persze ugy szoktam, ez mar egy vegso elkeresedett debug volt : )(#1563) stevve: de ez hazifeladat ~5 kategoria x 5 termekkel, csak az a baj, hogy ez a textboxos moka a kikotes a "Details" nezetnel :/
[ Szerkesztve ]
some men just wanna watch the world burn...
-
nagyúr
Ha ez házifeladat, akkor nem szóltam, de ha nem, akkor gondolkodj egyszerűbben:
Ha nem százas nagyságrendű a kategóriák száma, fogod a DataSet-et (vagy bármit) és a kategóriákat betolod egy legördülőbe és abban lépegetve a kiválasztott elem (SelectedItem) lesz a szűrő a gridre. Ez szerintem szebb megoldás és még talán gyorsabb is és nem fogsz elveszni a bindingsource-ok között sem és kevesebb lesz a copy-paste is.
Meg használj hibakezelést (try-catch) is, ha lehet. Az úgy szebb, mint hagyni elveszni a hibákat.
mod:
és konkrétan ezzel a binding cuccal kell megoldani? Csak mert a példa úgy nem életszerű, nem úgy szoktuk.[ Szerkesztve ]
-
nagyúr
eh, lejárt az időm...
Akkor viszont talán érdemes azon elgondolkodni, hogy feltehetnél egy gombot, képet, amin mondjuk nyilak vannak és azok reprezentálák a lépéseket. Azokkal is lehet léptetni a Dataset-ben a következőre. Az OleDb is kikötés vagy Oracle és amiatt van ez?Bár távol álljon tőlem, hogy beledumáljak.
[ Szerkesztve ]
-
j0k3r!
senior tag
bocs, kicsusztam az idobol. itt a feladat leiras.
most egyelore csak az elso reszet csinaltam meg a feladatnak, aztan ha mar jol mukodik, akkor a vegleges projectba hibakezelessel egyutt bepakolom.(#1564) stevve: van egy BindingNavigator-om, amivel leptetek, ha erre gondolsz.
"Az OleDb is kikötés vagy Oracle és amiatt van ez?"jo hogy szolsz, csak suliban oracle-s cucc volt, gondolom azert maradt benne
[ Szerkesztve ]
some men just wanna watch the world burn...
-
j0k3r!
senior tag
hello!
megint en. valaki tudna valami segitseget adni ahhoz, hogy hogy kellene a lekerdezeseket megvalositani? (nem konkret query kell)
feladat: ittelore is koszonom
[ Szerkesztve ]
some men just wanna watch the world burn...
-
j0k3r!
senior tag
up+ leirom a gondolatmenetemet, javitsatok ki legyszives, ha valami rossz.
szoval letrehozok egy sqlconnectiont:
SqlConnection con = new SqlConnection();
con.ConnectionString = "UID:Admin";megnyitom:
con.Open();
letrehozok egy sqladaptert es egy datasetet, amibe a query eredmenyet tarolom:
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet ds = new DataSet();
adapter.SelectCommand = new SqlCommand("SELECT * FROM Termekek WHERE KaterogiaAzonosito=1", con);
adapter.Fill(ds);a datasetet beallitom a datagridview datasource-anak:
dgvForm1.DataSource = ds.Tables;kapcsolat lezarasa:
con.Close();
elore is koszonom a segitseget
szerk: az egesz egy try catch blokkban van, es a a vegen dob egy: Format of the initialization string does not conform to specification starting at index 0 hibauzenetet
[ Szerkesztve ]
some men just wanna watch the world burn...
-
j0k3r!
senior tag
koszonom. mi kellene meg bele?
az app.configomban ez van:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="dbproba.Properties.Settings.Kapcsolat" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\adatok.mdb"
providerName="System.Data.OleDb" />
</connectionStrings>
</configuration>some men just wanna watch the world burn...
-
nagyúr
Ha connectionstring-ként tárolod az app.configban, akkor úgy is kell kiolvasni onnan:
string cnString = ConfigurationManager.ConnectionStrings["kapcsolatNeve"].ConnectionString;
De mindenek előtt hozzá kell adni a referenciákhoz a System.Configuration.dll-t és a using blokkba is fel kell venni.
[ Szerkesztve ]
-
j0k3r!
senior tag
kezdek kiegni : )
megcsinaltam, de ezt a hibauzenetet dobja.
kod(#1573) stevve: ok. javitom. koszonom. javitva:
SqlConnection con = new SqlConnection();
string cnString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
con.ConnectionString = cnString;
con.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
dsAdatok ds=new dsAdatok();
adapter.SelectCommand = new SqlCommand("SELECT * FROM Termekek WHERE KaterogiaAzonosito=1", con);
adapter.Fill(ds);
dgvForm1.DataSource = ds.Termekek;
con.Close();a
DataSet ds= new DataSet();
sort is atirtam:
dsAdatok ds=new dsAdatok();[ Szerkesztve ]
some men just wanna watch the world burn...
-
nagyúr
Egybe is vehető a connstring, viszont az app.configos nevét kell használni.
con.ConnectionString = ConfigurationManager.ConnectionStrings["dbproba.Properties.Settings.Kapcsolat"].ConnectionString;
Szerintem jó a sima DataSet is, nem kell ezt túlcifrázni egy ekkora feladatnál.
Ha a Tables[0] is benne van, elvileg jó lesz. Szerintem az object reference a connectionstring miatt volt. Használj break pointokat debugoláskor.
mod:
Ezeket megmutathatnád még, ha nem megy, mert ezekről nincs infó a kódban, amit linkeltél:dsAdatok dsAdatok;
KategoriakTableAdapter taKategoriak;
TermekekTableAdapter taTermekek;[ Szerkesztve ]
-
nagyúr
No meg a finally-t érdemes használni a kapcsolat lezárásához, nem a try-ba betenni:
finally
{
con.Close();
}Különben kivétel esetén nyitva maradhat.
Így talán szebb és jobb (a rendezést ne nézd...):
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["app.configban a connstring neve"].ConnectionString;
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet ds = new DataSet();
try
{
con.Open();
adapter.SelectCommand = new SqlCommand("SELECT * FROM Termekek WHERE KaterogiaAzonosito=1", con);
adapter.Fill(ds);
dgvForm1.DataSource = ds.Tables[0];
}
catch(Exception ex)
{
MessageBox.Show("hiba: " + ex.Message);
}
finally
{
con.Close();
{
}[ Szerkesztve ]
-
j0k3r!
senior tag
szerintem a wizard csinalhatta, nem emlekszem, hogy belepiszkaltam volna :/
Server Explorer / Connect to Database, aztan
Data source: Microsoft Access Database File (OLE DB)
+kitalloztam neki az mdb filet
User Name: Admin
Password: <nincs>
aztan Test Connection - az nem irt hibat, asszem valahogy igy tortent.[ Szerkesztve ]
some men just wanna watch the world burn...
-
bpx
őstag
hogyne lenne olyan connectionstring
SqlConnection-nél valóban nincs Provider, de OleDb-hez nem is SqlConnection kell
SqlConnection helyett OleDbConnection kell, és a többiből is Sql____ helyet OleDb____ osztályok kellenekez például tökéletesen lefut (csak ezt a részt piszkáltam, kicsit egyszerűsítettem + sűrítettem; de legalább produkál valami primitív működést )
OleDbConnection con = new OleDbConnection();
con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\adatok.mdb";
try
{
OleDbCommand command = new OleDbCommand("select termekneve from termekek where termekazonosito between 1 and 5", con);
con.Open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read()) { MessageBox.Show(reader[0].ToString()); }
reader.Close();
}
catch (Exception ex) { MessageBox.Show("hiba: " + ex.Message); }
finally { con.Close(); }viszont ehhez az adapteres mókához abszolút nem értek (és megtanulni sincs kedvem most, mert nemsokára lejár a munkaidő és indulok haza ), azt majd valaki még megmondja neked, hogy hogyan kell
[ Szerkesztve ]
-
nagyúr
Értem. Sose használtam még varázslóval mdb-t. Sőt, utálom az Access-t.
megoldás:
OleDb-t kell használni, nem SqlCommandot!
private void button1_Click(object sender, EventArgs e)
{
var con = new OleDbConnection
{
ConnectionString =
ConfigurationManager.ConnectionStrings["dbproba.Properties.Settings.Kapcsolat"].
ConnectionString
};
var adapter = new OleDbDataAdapter();
var ds = new DataSet();
try
{
con.Open();
adapter.SelectCommand = new OleDbCommand("SELECT * FROM Termekek WHERE (KategoriaAzonosito = 1)", con);
adapter.Fill(ds);
dgvForm1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(@"hiba: " + ex.Message);
}
finally
{
con.Close();
}
}-Zeratul-:
SqlCommand nem ismer olyan providert, hogy OoleDb, erre értettem. Az eleje varászslós és utána már nem OleDb-t használt a kolléga, itt csúszott el.[ Szerkesztve ]
-
nagyúr
Melyik részére gondolsz? A kolléga feljebb belinkelte a projektet, amiben már volt egy varázslós kapcsolat az mdb fájlhoz. Én már abból dolgoztam, de amúgy én se kínlódtam volna azzal. Jobb ezeket rögtön kódból lerendezni.
j0k3r!:
Nagyon szívesen, ezért van a topik.[ Szerkesztve ]
-
nagyúr
De, ezt így kell. Feltöltöd a DataSet-et a query visszatérési értékével és a grid forrásának megadod a DataSet első táblájával. Ez absz. klasszikus megoldás.
persze lehet BindingSource-t is alkalmazni, de az ugyanez pepitában, mert akkor annak adod meg a DataSet-et.
[ Szerkesztve ]
-
Lakers
tag
Hello!
Kész, Silverlight alkalmazásból, vagy WPF, vagy C#-ból hogyan lehet exe-t csinálni?
Láttam a codeprojecten alkalmazásokat és a VS-ben szépen fut, de szeretném ha külön, ahogy némelyiknél van csak egy exe fájlból futna az egész. ez hogyan lehetséges? -
nagyúr
-
Lakers
tag
Így gondoltam, ahogy az oldalon is van, Ott a project forrásfájlja, és ott van külön egy exe amihez nem kell debugolni stb, csak nyomatja a játékot
-
j0k3r!
senior tag
hello!
letoltod a zip-et, aztan kitomorited, aztan megnyitod a jigsaw.sln filet (vs-ban), aztan f5, aztan kilepsz a vs-bol, aztan a jigsaw.sln mellett lesz egy bin mappa, azonbelul Debug mappa, es ott lesz a jigsaw.exe.
vs2010-ban most teszteltem es mukodik.mas:
a multkori adatbazisos feladathoz kapcsolodoan volna egy kerdesem:
hogy lehetne a Kategoria tablan belul a KategoriaNeve-ket egy comboboxban megjeleniteni ? (az osszeset)elore is koszonom a segitseget.
[ Szerkesztve ]
some men just wanna watch the world burn...
-
nagyúr
Most nincs előttem VS, de a comboBox-nál is van DataSource. A grid mintájára készítesz egy lekérdezést, emiben csak a kategórianevek vannak és azt hozzáadod.
Kiválasztásnál meg a ComboBox SelectedIndexChanged eseményekor a comboBox.SelectedItem lesz a kiválasztott mező ebben az esetben.
[ Szerkesztve ]
-
j0k3r!
senior tag
koszonom.
kod:using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Configuration;
using vp.dsAdatokTableAdapters;
namespace vp
{
public partial class frmUj : Form
{
OleDbConnection con = new OleDbConnection();
public frmUj()
{
InitializeComponent();
con.ConnectionString = ConfigurationManager.ConnectionStrings["vp.Properties.Settings.adatokConnectionString"].ConnectionString;
OleDbDataAdapter adapter = new OleDbDataAdapter();
DataSet ds = new DataSet();
try
{
con.Open();
adapter.SelectCommand = new OleDbCommand("SELECT KategoriaNeve FROM Kategoriak", con);
adapter.Fill(ds);
cbKategoriak.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(@"hiba: " + ex.Message);
}
finally
{
con.Close();
}
}
}
}ennek a hatasara a comboboxban lesz 5 db "System.Data.DataRowView".
az 5 az stimmel, csak a nevek nem : )[ Szerkesztve ]
some men just wanna watch the world burn...
-
Vasinger!
nagyúr
Ma írtunk progon, hát nem ment valami fényesen, sőt sehogy, de szerencsére nem írta be az egyest.
Egy ilyen progit kellett volna megcsinálni:
3 számot kellett bekérni (1-től 5-ig) egymástól vesszővel elválasztva és ezeknek az átlagát venni. Nekem ez nem ment, vagy legalábbis meg voltak adva milyen parancsokat használjunk fel hozzá: Substring, IndexOfTudna valaki segíteni nekem és elmagyarázni, hogy mit hogyan kell?
-
nagyúr
jah... bocs, kell a combobox.datamember, illetve a combobox.valuemember, amiknek az oszlop nevét kell adni így valahogy:
combobox.datamember = "kategoriak"
de ha nem kódból csinálod, akkor a combobox tulajdonságainál is tudsz datasource-t hozzárendelni. Eh, de kár, hogy nincs VS a környékemen most.
Illetve egy harmadik mód, ha úgyis csak ez az egy oszlop van benne, hogy a DS-ből a Rows-t veszed.
Vasinger!:
Este igen... később.[ Szerkesztve ]
-
Vasinger!
nagyúr
válasz robotjatek #1598 üzenetére
Azt sajna nem is nagyon tudtam volna, de ha használom is akkor már csak 4-es.
Egyébként a tanár ezt a parancsot nem is ismeri, csak nézett volnaEgyébként próbálkoztam a Split-tel is, de nem nagyon értettem meg a használatát, vagy legalább is nem sikerült átvinnem erre a feladatra a megszerzett "tudást".
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- XBOX ONE/PS4/PS5/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!
- XBOX SERIES/PS4/PS5/XBOX ONE/NINTENDO SWITCH konzolt vásárolnék!
- PS5/PS4/XBOX ONE/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!
- Új Dobozos Lenovo Ideapad Flex 5 x360 Érintős Ultrabook Óriás Tab 16" -40% Ryzen 5 5500U 16/512 QHD
- PS4/PS5/XBOX ONE/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!