السلام عليكم ورحمة الله وبركاته
أطمح من خلال هذه المشاركة التزود بملاحظاتكم الكريمة وكذلك تعديلكم على الملف المرفق
والله الموفق
السلام عليكم ورحمة الله وبركاته
أطمح من خلال هذه المشاركة التزود بملاحظاتكم الكريمة وكذلك تعديلكم على الملف المرفق
والله الموفق
تم تعديل هذه المشاركة بواسطة ابن مسقط في 26 يونيو 2008 في 01:43

أخي احكي لنا قليلاً عن مشروعك
سأحاول الإطلاع عليه
لكن ذكرني كيف كنا نضيف قاعدة البينات على odbc
لأني بصراحة لا استخدم JDBC على الأغلب
تحياتي
alaadiaa كتب:أخي احكي لنا قليلاً عن مشروعكسأحاول الإطلاع عليه
لكن ذكرني كيف كنا نضيف قاعدة البينات على odbc
لأني بصراحة لا استخدم JDBC على الأغلب
تحياتي
أشكرك أستاذي الكريم alaadiaa على سرعة ردك وإهتمامك بالموضوع.
طريقة إضافة قاعدة البيانات على odbc تتم كالتالي :-
1- الذهاب إلى Control Panel
2- إختيار Administrative Tools
3- (Data Sources (ODBC
4- إختيار محرك ( Microsoft Access Driver (*.mdb
وللمزيد شرح بقية الخطوات بالتفاصيل أدرجتها بالملف المرفق.
أما بخصوص فكرة البرنامج فهو عبارة عن برنامج يتم التعامل معه ما بين الـClient و Server
وتتلخص فكرته بالأتي :-
البرنامج لخدمة العملاء وكذلك لمساعدة موظفى شركة على بيع الحواسيب والاجهزه الطرفيه الالكترونيه وغيرها من البنود.
أولا :نموذج Client العميل :
أ. يحتوي على رقم البند ، اسم هذا البند ، الكمية
ب يتم عمل على السعر الاجمالي ، وتخفيض السعر النهائي .
ثانيا: Server الخادم :
أ. حساب السعر الاجمالي
ب حساب السعر النهائي بعد التخفيض
مهمة السيرفير مفصلة في الأتي
a. Calculate the total price b. Calculate the final price after discount Total price < 100 OR then No discount 101 -- 500 then 20% 501 – 1000 then 25% > 1001 then 30% Server returns Total Price, Discount and Final Price to the Client c. Saves the client data in the database. The database should contain final price, host name, and IP address for the client.
ثالثاً : Bill الفاتورة يجب أن تظهر الأتي :
رقم البند
اسم البند
الكمية
السعر الإجمالي
السعر بعد التخفيظ
لقد حاولت جاهدا أن يعمل حسب الفكرة المطروحه ولكن يبدو أني لم أستطع
أرجو أن يكون شرحي واضحا وأتمنى التكرم بالتعديل عليه بما تراه مناسباً.
تم تعديل هذه المشاركة بواسطة ابن مسقط في 26 يونيو 2008 في 14:54

اقتباسلقد حاولت جاهدا أن يعمل حسب الفكرة المطروحه ولكن يبدو أني لم أستطع
هل لاحظت وجود أية مشاكل؟
تحياتي
تم تعديل هذه المشاركة بواسطة alaadiaa في 26 يونيو 2008 في 15:13
لي عوده على الموضوع بعد يومين او ثلاث
Xline كتب:لي عوده على الموضوع بعد يومين او ثلاث
لك كل التحيه
بإذن الله سوف أنتظر رجوعك وكذلك من يهمه الإفادة في هذا الموضوع.

الحقيقة اكره odbc
لو تعملها mysql :)
سوف اطلع على البرنامج خلال الايام القليلة القادمة
Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why
أخي هل قاعدة البيانات item بديلة للقاعدة bill
قم بكتابة جمل الsql الخاصة بعملية الاستعلام عن المطلوبين
وبإذن الله سأقوم بمساعدتك على عمل المطلوب
تحياتي
أخي هل قاعدة البيانات item بديلة للقاعدة bill
قم بكتابة جمل الsql الخاصة بعملية الاستعلام عن المطلوبين
وبإذن الله سأقوم بمساعدتك على عمل المطلوب
تحياتي
الأخ/ رامي
للأسف ليست لي الدرايه في التعامل مع mysq
----------------------------------------------------
الأخ/ alaadiaa
نعم تستطيع أن تعتبر قاعدة item هي التي تعتمد عليها وقد قمت بالتعديل عليها للمره الثالثه وستجد ملفها بالمرفقات.
وربما النموذج الذي صممته بداخل القاعدة الأخيرة الموجوده بالمرفقات المسمى frmPurchse سيوضح ما أسعى إليه
والإستعلام قد يكون كالأتي :-
SELECT FinalPrice.i_id_item, item.I_name, item.I_price, FinalPrice.Quantity, [I_price]*[Quantity] AS Price FROM item INNER JOIN FinalPrice ON item.I_id = FinalPrice.i_id_item;
-----------------------------------
لقد قمت بإرفاق صورة من نموذج قمت بتصميمه على الأكسس وهو إلى حد ما قريب من المطلوب وهو الذي أتمنى تنفيذه بواسطة الجافا.
والله الموفق
تم تعديل هذه المشاركة بواسطة ابن مسقط في 28 يونيو 2008 في 16:53

أنتم أعرف مني
أهل قواعد البيانات
بس ألا ترى معي أخي أن الاستعلام على الاسم
ولا فائدة من وجود المعرف
إن لم ترد فهذا حقك
أحتاج إلى جملة إستعلام أخرى
ترجع أسماء المنتجات جميعاً(المعرفات إن لم يعجبك تعديلي)
تحياتي
alaadiaa كتب:أنتم أعرف منيأهل قواعد البيانات
بس ألا ترى معي أخي أن الاستعلام على الاسم
ولا فائدة من وجود المعرف
إن لم ترد فهذا حقك
أحتاج إلى جملة إستعلام أخرى
ترجع أسماء المنتجات جميعاً(المعرفات إن لم يعجبك تعديلي)
تحياتي
أستاذي الكريم
نحن أهل قواعد البيانات "كما أسميتنا" :rolleyes: نفضل كثيرا التعامل مع المعرف لأنه بإختصار يعني التعامل مع رقم وفي هذا ميزة لأنه لا يشغل حيز أو حجم مثل النصوص داخل الجداول وأسرع في الفهرسة والإستعلام والتمييز.
كما طلبت الجملة التالية ترجع جميع المنتجات مع معرفها :
SELECT item.I_id, item.I_name FROM item;
وهذه الجمله ترجع جميع المنتجات بدون معرفها :
SELECT item.I_name FROM item;
ولك الشكر والتقدير على متابعتك المستمره لموضوعي.

هذا كود سريع للاتصال ب mySQL
لانني لااملك اكسس على جهازي
قمت ببعض التعديلات مثلا مساحة الابلت وبعض الامور الطفيفه
package javaapplication1;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class NetClient extends JApplet implements ActionListener
{
Panel oscards,client,bill;
CardLayout cardlo;
JTextField numbField;
JLabel display, b1,b2,b3,b4,b5;
Socket socket;
GridLayout glo;
JTextField nam1,id1,a1,a2,a3,a4,a5,a6;
int numb = 0;
String numbStr = null,n1,n2,n3,n4;
public void init()
{
try
{
socket = new Socket("localhost",8765);
} catch (UnknownHostException e) {
System.out.println("Unknown host");
} catch (IOException e)
{
System.out.println("IO Exception");
return;
}
cardlo=new CardLayout();
glo=new GridLayout(5,2,30,40);
oscards=new Panel();
oscards.setLayout(cardlo);
client = new Panel();
client.setLayout(glo);
JLabel nam = new JLabel("Enter the Name of product:", JLabel.RIGHT);
JLabel id= new JLabel("Enter ID:", JLabel.RIGHT);
JLabel id2= new JLabel("Enter quantity:", JLabel.RIGHT);
JLabel id3= new JLabel("Enter the price:", JLabel.RIGHT);
JLabel id4= new JLabel(" ", JLabel.RIGHT);
numbField = new JTextField(6);
JButton button = new JButton("Send");
button.addActionListener(this);
nam1=new JTextField(22);
// n1=nam1.getText();
id1=new JTextField(12);
a1=new JTextField(12);
client.add(nam);
client.add(nam1);
client.add(id);
client.add(id1);
client.add(id2);
client.add(a1);
client.add(id3);
client.add(numbField);
client.add(button);
display = new JLabel("No number");
client.add(display);
oscards.add(client,"Client");
add(oscards);
setSize(400, 400);
}
public void actionPerformed(ActionEvent e)
{
BufferedReader fromServer = null;
PrintWriter toServer = null;
String actionCommand = e.getActionCommand();
if (e.getSource() instanceof JButton)
if (actionCommand.equals("Send"))
{
try
{
n1=nam1.getText();
numb = Integer.parseInt(numbField.getText())*Integer.parseInt(a1.getText());
}
catch (NumberFormatException ex)
{
System.out.println("Number Format Exception");
}
try
{
fromServer = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
toServer =
new PrintWriter(socket.getOutputStream(), true);
}
catch (IOException ex)
{
System.out.println("IO Exception");
}
toServer.println(n1);
toServer.println(numb);
try
{
numbStr = fromServer.readLine();
}
catch (IOException ex)
{
System.out.println("Applet receive failed:");
}
display.setText(numbStr);
bill = new Panel();
bill.setLayout(new GridLayout(5,1,40,40));
bill.setLocation(600,600);
bill.setBackground(Color.pink);
b1=new JLabel("The name of the product is "+nam1.getText(),JLabel.LEFT);
System.out.println(n1);
b2=new JLabel("The ID of the product is "+id1.getText(),JLabel.LEFT);
b3=new JLabel("Total Price is "+numb,JLabel.LEFT);
b4=new JLabel("Final Price is "+numbStr,JLabel.LEFT);
b5=new JLabel("Signature _________________________________", JLabel.RIGHT);
bill.add(b1);
bill.add(b2);
bill.add(b3);
bill.add(b4);
bill.add(b5);
oscards.add(bill,"Bill");
cardlo.show(oscards,"Bill");
repaint();
}
}
}package javaapplication1;
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
public class NetServer {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
Statement s = con.createStatement();
try
{
ServerSocket serverSocket = new ServerSocket(8765);
Socket clientSocket = serverSocket.accept();
System.out.println("The server is waiting for clients");
BufferedReader fromClient = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
PrintWriter toClient =
new PrintWriter(clientSocket.getOutputStream(), true);
while (true)
{
String name=fromClient.readLine();
int k = Integer.parseInt(fromClient.readLine());
int num=k;
System.out.println("received: " + k);
if(k>1001)
{
k=k-((k*30)/100);
toClient.println(k);
}
else if(k>501)
{
k=k-((k*25)/100);
toClient.println(k);
}
else if(k>101)
{
k=k-((k*20)/100);
}
else
toClient.println(k);
try {
String host="345", ipadd="12";
int fprice=0;
fprice=k;
String sql="INSERT INTO product(productName,id,quantity,price)"+" Values"+"('" + name + "', '"+ ipadd + "', '" + num + "', '" + fprice + "')";
s.executeUpdate(sql);
s.execute("select * from product"); // select the data from the table
ResultSet rs = s.getResultSet(); // get any ResultSet that came from our query
while ( rs.next() ) // this will step through our data row-by-row
{
System.out.println("Data from host: " + rs.getString(3) );
}
s.close(); // close the Statement to let the database know we're done with it
con.close(); // close the Connection to let the database know we're done with it
}
catch (Exception err) {
System.out.println("ERROR: " + err);
}
}
}
catch(IOException ex)
{
System.err.println(ex);
}
}
}لا لا ما قصدت هذا أخي ابن مسقط
قصدت أن المستخدم يفهم اسم المنتج ولا يفهم معرفه
لهذا لا نظهر المعرف ونظهر اسم المنتج
هل قام الأخ Xline بالمطلوب؟
أي مساعدة نحن جاهزون
أستاذي الكريم/ Xlin
أشكرك على التعديل الذي قمت به ولكني لم أستطيع تشغيل الملفين بسبب عدم وجود MySql لدي ولعدم الإلمام به ، فهل من سبيل إلى تحقيق ذلك .
الأستاذ/ alaadiaa
بكل تأكيد إظهار اسم المنتج للمستخدم العادي هو الأفضل.
أتمنى أيضاً منك التكرم بالإفادة بما تتوصل إليه في هذا الموضوع

اولا انا لست استاذاً
بالنسبه ل mySQL بسيطه
حمل قاعدة البيانات من هنا
http://dev.mysql.com/downloads/mysql/5.0.html#win32
Essentials هي المستخدمه
بعد ماتحملها امش مع الويزرد وانت اعرف مني في قواعد البيانات
بعد ماتنتهي كل شي روح : start-all prog.-mySQl-mySql client
ادخل باسوورد الروت وانشئ جداول وغيرها
اي سؤال لاتتردد اخي الكريم
أخي الأستاذ/ عيسى
من أتعلم منه بلاشك فهو أستاذي :rolleyes:
لقد أنزلت نسخة MySql ولكنها أبت ورفضت التثبيت وأعتقد بسبب نسخة الويندوز الغير مرخصه :unsure:

قمت بجعل البرنامج متعدد العملاء multiClients
عن طريق استخدام الخيوط Threads
package ClientServer;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class NetServer {
static Connection con;
static Statement s;
static ServerSocket serverSocket;
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dataSourceName = "netdb";
String dbURL = "jdbc:odbc:" + dataSourceName;
con = DriverManager.getConnection(dbURL, "","");
s = con.createStatement();
serverSocket = new ServerSocket(8765);
System.out.println("The server is waiting for clients");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
try {
Socket clientSocket = serverSocket.accept();
Thread newService=new ThreadClient(clientSocket,s);
newService.start();
System.out.println("The server ready to recive anthor request");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//s.close(); // close the Statement to let the DataBase know we're done with it
//con.close(); // close the Connection to let the DataBase know we're done with it
}
}package ClientServer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.sql.ResultSet;
import java.sql.Statement;
public class ThreadClient extends Thread implements Runnable {
private Socket clientSocket;
private Statement s;
public ThreadClient(Socket clientSocket,Statement s){
this.clientSocket=clientSocket;
this.s=s;
}
public void run() {
try
{
BufferedReader fromClient = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
PrintWriter toClient =
new PrintWriter(clientSocket.getOutputStream(), true);
while (true)
{
String name=fromClient.readLine();
int k = Integer.parseInt(fromClient.readLine());
System.out.println("received: " + k);
if(k>1001)
{
k=k-((k*30)/100);
toClient.println(k);
}
else if(k>501)
{
k=k-((k*25)/100);
toClient.println(k);
}
else if(k>101)
{
k=k-((k*20)/100);
}
else
toClient.println(k);
try {
String host="345", ipadd="12";
String sql="insert into Bill values(" + k + ",'" +ipadd + "','" + host + "')";
s.executeUpdate(sql);
s.execute("SELECT item.I_name FROM item;"); // select the data from the table
ResultSet rs = s.getResultSet(); // get any ResultSet that came from our query
while ( rs.next() ) // this will step through our data row-by-row
{
System.out.println("Data from host: " + rs.getString(3) );
}
}
catch (Exception err) {
System.out.println("ERROR: " + err);
}
}
}
catch(IOException ex)
{
System.err.println(ex);
}
}
}package ClientServer;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class NetClient extends JApplet implements ActionListener
{
Panel oscards,client,bill;
CardLayout cardlo;
JTextField priceTextField;
JLabel display, b1,b2,b3,b4,b5;
Socket socket;
GridLayout glo;
JTextField nameOfProductTextField,idTextField,quantityTextFeild,a2,a3,a4,a5,a6;
int numb = 0;
String numbStr = null,n1,n2,n3,n4;
public void init()
{
try
{
socket = new Socket("localhost",8765);
} catch (UnknownHostException e) {
System.out.println("Unknown host");
} catch (IOException e)
{
System.out.println("IO Exception");
return;
}
cardlo=new CardLayout();
oscards=new Panel();
oscards.setLayout(cardlo);
JLabel id4= new JLabel(" ", JLabel.RIGHT);
// n1=nameOfProductLabeleOfProductTextField.getText();
add(oscards);
{
client = new Panel();
oscards.add(client, "Client");
{
JLabel nameOfProductLabel = new JLabel("Enter the Name of product:",
JLabel.RIGHT);
client.add(nameOfProductLabel);
}
{
nameOfProductTextField = new JTextField(22);
client.add(nameOfProductTextField);
}
{
JLabel idLabel = new JLabel("Enter idLabel:", JLabel.RIGHT);
client.add(idLabel);
}
{
idTextField = new JTextField(12);
client.add(idTextField);
}
{
JLabel quantityLabel = new JLabel("Enter quantity:", JLabel.RIGHT);
client.add(quantityLabel);
}
{
quantityTextFeild = new JTextField(12);
client.add(quantityTextFeild);
}
{
JLabel priceLabel = new JLabel("Enter the price:", JLabel.RIGHT);
client.add(priceLabel);
}
{
priceTextField = new JTextField(6);
client.add(priceTextField);
}
{
JButton sendButton = new JButton("Send");
client.add(sendButton);
sendButton.addActionListener(this);
}
{
display = new JLabel("No number");
client.add(display);
}
glo = new GridLayout(5, 2, 30, 40);
client.setLayout(glo);
}
setSize(400, 400);
}
public void actionPerformed(ActionEvent e){
BufferedReader fromServer = null;
PrintWriter toServer = null;
String actionCommand = e.getActionCommand();
if (e.getSource() instanceof JButton)
if (actionCommand.equals("Send")){
try{
n1=nameOfProductTextField.getText();
numb = Integer.parseInt(priceTextField.getText())*Integer.parseInt(quantityTextFeild.getText());
}
catch (NumberFormatException ex){
System.out.println("Number Format Exception");
}
try{
fromServer = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
toServer =
new PrintWriter(socket.getOutputStream(), true);
}
catch (IOException ex)
{
System.out.println("IO Exception");
}
toServer.println(n1);
toServer.println(numb);
try
{
numbStr = fromServer.readLine();
}
catch (IOException ex)
{
System.out.println("Applet receive failed:");
}
display.setText(numbStr);
bill = new Panel();
bill.setLayout(new GridLayout(5,1,40,40));
bill.setLocation(600,600);
bill.setBackground(Color.pink);
b1=new JLabel("The name of the product is "+nameOfProductTextField.getText(),JLabel.LEFT);
System.out.println(n1);
b2=new JLabel("The id the product is "+idTextField.getText(),JLabel.LEFT);
b3=new JLabel("Total Price is "+numb,JLabel.LEFT);
b4=new JLabel("Final Price is "+numbStr,JLabel.LEFT);
b5=new JLabel("Signature _________________________________", JLabel.RIGHT);
bill.add(b1);
bill.add(b2);
bill.add(b3);
bill.add(b4);
bill.add(b5);
oscards.add(bill,"Bill");
cardlo.show(oscards,"Bill");
repaint();
try {
socket.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}لا يوجد لدي قاعدة بيانات أكسيس
وأنت قمت بجعلي مشوش بالنسبة للجمل
(كل يوم معدل على قاعدة البيانات)
تحياتي
الله يكرمك على هالكلام اخي
اقتباسلقد أنزلت نسخة MySQL ولكنها أبت ورفضت التثبيت
هل تستخدم ويندوز فيستا ؟