|
Dwayne Barsotta wrote: you can make a custom dll of ui elements in xaml and code, then compile as a dll We have many WPF applications but they all use the same login DLL (or we sometimes include the project) which includes datasource, viemodel, view and code. So yes your IT guy is correct.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Start here: [^]
For possible issues with mixing and matching WinForms and WPF UserControls:
[^]
|
|
|
|
|
Are there open source styles our frameworks that pretty much changes the entire look of elements?
I'd like to make applications that don't look exactly like the typical windows window? With out me having to remake common controls.
I'm also about to post a question about building UI elements.
|
|
|
|
|
I have to admit that I'm rather partial to the work done on MahApps[^]. Alternatively, there are some free WPF themes[^] available on CodePlex (you'll have to download the archive).
This space for rent
|
|
|
|
|
WPF styles "cascade"; from the application level; through to local assignments; down to the property level.
By refraining from setting any styles at a "low" level, you can influence the entire "theme" of an app by only (first) setting styles at the "application level", which will then cascade down to the lowest level.
e.g. Define the style of a "TextBox" at the app level, and the entire app will have a similar textbox style; while still being able to override at any level in the "visual tree" (of ui controls).
By limiting the setting of "background" and "forground" colors to "dynamic resources" (versus "static" resources) at the app level, I can give the user the ability to change theme colors on-the-fly from "summer" to "winter" (for example).
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
Google translate: Hello,
I practice on a program that gives me numbers and random letters. I am connected to a database SQLite which works perfectly but my current concern is that I can not print. In the data source I do not see Data Sqlite for me connected, the tutorials that I look at are those who program under vb2013, 2015 ... me I am on vb2008.
I would like to know how to make the data sqlite appear in my data source.
Cordially..
Original: Bonjour,
Je m'exerce sur un programme qui me donne des chiffres et lettres aléatoire. Je suis connecté à une base de donnée SQLite qui fonctionne parfaitement mais mon soucis actuel c'est que je n'arrive pas à imprimer. Dans la source de donnée je ne voit de Data Sqlite pour me connecté, les tutos que je regarde concerne ceux qui programme sous vb2013, 2015... moi je suis sur vb2008.
J'aimerais savoir comment faire apparaître le data sqlite dans ma source de donnée.
Cordialement..
|
|
|
|
|
This is an English language site, and we only accept questions and answers in that language: please use Google Translate in future to assist. I have added the translation to your question.
Ceci est un site en Anglais, et nous acceptons seulement les questions et réponses dans cette langue: s'il vous plaît utiliser Google Translate à l'avenir pour vous aider. J'ai ajouté la traduction à votre question.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Please excuse me for this error ...
|
|
|
|
|
No problem!
But I'm not sure I understand your question: it doesn't seem to have anything to do with printing?
Can you share any code which demonstrates the problem, and explain what it does that you didn't expect, or doesn't do that you did?
Sample data may also help as we don't have access to your screen, HDD, or database!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
excuse me how do you send a screenshot? ...
I use the reaportView tool and you have to connect it to your database. I made a screenshot that I would like to introduce it to you
|
|
|
|
|
You can't post screenshots directly here - we have too many idiots who would post inappropriate material for that at present.
You can post then to dropbox and post a link - but generally a good explanation with sample data works better (we can't copy'n'paste from an image into a DB or Visual Studio for testing).
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
There is something that escapes me ...
This is the code for the form1
(using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SQLite;
namespace Acode
{
public partial class Form1: Form
{
public Form1 ()
{
InitializeComponent ();
}
private SQLiteConnection sql_con;
private SQLiteCommand sql_cmd;
private SQLiteDataAdapter DB;
private DataSet DS = new DataSet ();
private DataTable DT = new DataTable ();
private void setConnection ()
{
sql_con = new SQLiteConnection (@ "Data Source = DBcode.db; Version = 3; New =; Compress = True;");
}
private void LoadData ()
{
SetConnection ();
sql_con.Open ();
sql_cmd = sql_con.CreateCommand ();
string CommandText = "select * from InfoCode";
DB = new SQLiteDataAdapter (CommandText, sql_con);
DS.Reset ();
DB.Fill (DS);
DT = DS.Tables [0];
dataGridView1.DataSource = DT;
sql_con.Close ();
}
private void Form1_Load (object sender, EventArgs e)
{
LoadData ();
}
private void ExecuteQuery (String txtQuery)
{
SetConnection ();
sql_con.Open ();
sql_cmd = sql_con.CreateCommand ();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery ();
sql_con.Close ();
}
public static string randomstring (int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWYZ0123456789";
Random random = new Random ();
return new string (Enumerable.Repeat (floats, length) .Select (s => s [random.Next (s.Length)]). ToArray ());
}
private void btnGenerer_Click (object sender, EventArgs e)
{
lblDisplay.Text = randomstring (4);
txtAfficPrice.Text = "100";
}
private void button1_Click (object sender, EventArgs e)
{
lblDisplay.Text = randomstring (5);
txtAffichPrice.Text = "300";
}
private void button2_Click (object sender, EventArgs e)
{
lblDisplay.Text = randomstring (6);
txtAffichPrice.Text = "500";
}
private void btnRegister_Click (object sender, EventArgs e)
{
if (lblDisplay.Text == "")
{
MessageBox.Show ("Please generate the code");
}
else
{
string txtQuery = "insert into InfoCode (Code, DateCode, PriceCode) values ('" + lblDisplay.Text + "', '" + dateTimePicker1.Text + "', '" + txtAfficePrice.Text + "')";
ExecuteQuery (txtQuery);
LoadData ();
MessageBox.Show ("Registration completed successfully");
lblDisplay.Text = "";
groupBoxGenerer.Enabled = false;
btnSave.Enabled = false;
This.Refresh ();
}
}
private void btnAdd_Click (object sender, EventArgs e)
{
groupBoxGenerer.Enabled = true;
btnSave.Enabled = true;
}
private void exitToolStripMenuItem_Click (object sender, EventArgs e)
{
this.Close ();
}
private void codeSOLDToolStripMenuItem_Click (object sender, EventArgs e)
{
FrmCodeSold frmcodevended = new FrmCodeSold ();
frmcodevendu.Show ();
this.Hide ();
}
private void pointToolStripMenuItem_Click (object sender, EventArgs e)
{
FrmPointJournal pointQ = new FrmPointJournal ();
pointQ.Show ();
this.Hide ();
}
}
}
)
and I wish I could print all the recordings from there via another form
I have a faith done but with access and this faith I use SQlite but as I emphasize them I do not see the data SQlite in my data source.
|
|
|
|
|
For starters, never do this:
string txtQuery = "insert into InfoCode (Code, DateCode, PriceCode) values ('" + lblDisplay.Text + "', '" + dateTimePicker1.Text + "', '" + txtAfficePrice.Text + "')"; Never concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
When you concatenate strings, you cause problems because SQL receives commands like:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood' The quote the user added terminates the string as far as SQL is concerned and you get problems. But it could be worse. If I come along and type this instead: "x';DROP TABLE MyTable;--" Then SQL receives a very different command:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable; Which SQL sees as three separate commands:
SELECT * FROM MyTable WHERE StreetAddress = 'x'; A perfectly valid SELECT
DROP TABLE MyTable; A perfectly valid "delete the table" command
And everything else is a comment.
So it does: selects any matching rows, deletes the table from the DB, and ignores anything else.
So ALWAYS use parameterized queries! Or be prepared to restore your DB from backup frequently. You do take backups regularly, don't you?
That won't solve your problem, but it's a major risk that you need to address immediately.
For the problem you have found, start with the debugger.
Put a breakpoint on the line
dataGridView1.DataSource = DT; and run your app. When it hits the breakpoint, have a close look at DT and see exactly what has been returned. How many columns? How many rows? What is in the actual cells?
As an aside, you need to look at your naming conventions:
private void ExecuteQuery (String txtQuery)
{
SetConnection ();
sql_con.Open ();
sql_cmd = sql_con.CreateCommand ();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery (); In any code review, a method called ExecuteQuery which calls ExecuteNonQuery would be at target for abusive language!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Thank you for all these tips for me will be a pulse to my learning. it's in my research that I found but what do you recommend to me?
I correct this error before talking about printing or after?
|
|
|
|
|
I'd correct it first - if only because once you fix the other problem you probably won't "get around to it" otherwise!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Frankly thank you for giving me your time. give me a few minutes just the time for me to redo my connection and I come back to you.
|
|
|
|
|
Not a problem!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SQLite;
namespace Acode
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private SQLiteConnection sql_con;
private SQLiteCommand sql_cmd;
private SQLiteDataAdapter DB;
private DataSet DS = new DataSet();
private DataTable DT = new DataTable();
private void setConnection()
{
sql_con = new SQLiteConnection(@"Data Source=DBcode.db; Version=3;New=;Compress=True;");
}
private void LoadData()
{
setConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = "select * from InfoCode";
DB = new SQLiteDataAdapter(sql_cmd.CommandText, sql_con);
DS.Reset();
DB.Fill(DS);
DT = DS.Tables[0];
dataGridView1.DataSource = DT;
sql_con.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
LoadData();
}
private void ExecuteQuery()
{
setConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_con.Close();
}
public static string randomstring(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWYZ0123456789";
Random random = new Random();
return new string(Enumerable.Repeat(chars, length).Select(s => s[random.Next(s.Length)]).ToArray());
}
private void btnGenerer_Click(object sender, EventArgs e)
{
lblAffichage.Text = randomstring(4);
txtAffichPrix.Text = "100";
}
private void button1_Click(object sender, EventArgs e)
{
lblAffichage.Text = randomstring(5);
txtAffichPrix.Text = "300";
}
private void button2_Click(object sender, EventArgs e)
{
lblAffichage.Text = randomstring(6);
txtAffichPrix.Text = "500";
}
private void btnEnregistrer_Click(object sender, EventArgs e)
{
if (lblAffichage.Text =="")
{
MessageBox.Show("Merci de bien vouloir générer le code");
}
else
{
sql_cmd.CommandText = "insert into InfoCode (Code, DateCode, PrixCode) values('" + lblAffichage.Text + "' , '" + dateTimePicker1.Text + "' , '" + txtAffichPrix.Text + "')";
sql_cmd.ExecuteNonQuery();
LoadData();
MessageBox.Show("Enregistrement effectué avec succès");
lblAffichage.Text = "";
groupBoxGenerer.Enabled = false;
btnEnregistrer.Enabled = false;
this.Refresh();
}
}
private void btnAjouter_Click(object sender, EventArgs e)
{
groupBoxGenerer.Enabled = true;
btnEnregistrer.Enabled = true;
}
private void quitterToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void codeVenduToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmCodeVendu frmcodevendu=new FrmCodeVendu();
frmcodevendu.Show();
this.Hide();
}
private void pointToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmPointJournalier pointQ = new FrmPointJournalier();
pointQ.Show();
this.Hide();
}
}
}
I receive an error message: Database is not open
|
|
|
|
|
No, when I meant was "Don't concatenate strings" and "Parameterized queries" are teh important bit:
sql_cmd.CommandText = "insert into InfoCode (Code, DateCode, PrixCode) values('" + lblAffichage.Text + "' , '" + dateTimePicker1.Text + "' , '" + txtAffichPrix.Text + "')"; Is extremely dangerous, not the "wrong name" bit!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
but what should I do? since you asked me to correct the error. can you tell me more so that I can understand
|
|
|
|
|
Have a google for Parameterized queries - there is a lot out there.
But basically:
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)", con))
{
cmd.Parameters.AddWithValue("@C1", myValueForColumn1);
cmd.Parameters.AddWithValue("@C2", myValueForColumn2);
cmd.ExecuteNonQuery();
}
}
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
i will do it aisin and come back to you, thanks for your help
|
|
|
|
|
private void btnAdd_Click(object sender, EventArgs e)
{
if (lblAffichage.Text == "")
{
MessageBox.Show("Merci de bien vouloir générer le code");
}
else
{
using (SQLiteConnection con = new SQLiteConnection(sql_con))
{
con.Open();
using (SQLiteCommand cmd = new SQLiteCommand("INSERT INTO InfoCode (Code, DateCode, PrixCode) VALUES (@Code, @DateCode, @PrixCode)", con))
{
cmd.Parameters.AddWithValue("@Code", lblAffichage.Text);
cmd.Parameters.AddWithValue("@DateCode", dateTimePicker1.Text);
cmd.Parameters.AddWithValue("@PrixCode", txtAffichPrix.Text);
cmd.ExecuteNonQuery();
}
LoadData();
MessageBox.Show("Enregistrement effectué avec succès");
lblAffichage.Text = "";
groupBoxGenerer.Enabled = false;
btnEnregistrer.Enabled = false;
this.Refresh();
}
}
}
Thank you very much for your help ... it works
|
|
|
|
|
Hello sir I was able to find a solution to print, I'm going through a DataSet: I connected the DataSet to my database
|
|
|
|
|
here is the code: {
setConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
string CommandText = "select * from InfoCode";
DB = new SQLiteDataAdapter(CommandText, sql_con);
DS.Reset();
CrystalReportImprimCode x = new CrystalReportImprimCode();
DBset dt = new DBset();
DB.Fill(dt.InfoCode);
x.SetDataSource((DataTable)dt.InfoCode);
crystalReportViewer1.ReportSource = x;
crystalReportViewer1.Refresh();
sql_con.Close();
}
|
|
|
|