50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

سلام اقای میری عزیز من

 

سلام اقای میری عزیز من. بی ربط نیست در  حال طراحی یک نرم افزار انبار داری بزرگ هستم

دوستان سوال را به صورت واضح  تر مطرح میکنم. خروجی داده های من تمام در فرم ویژوال بیسیک است.

قسمتی از کد را برای درک بهتر سوال در فایل ضمیمه میاورم. 

من یک جدول دارمt1 با فیلدهایی بنام ,idt1,f1,f2,f3,f4 و جدولی دیگر بنام t2 در همان دیتا بیس با فیلدهای idt2,r1,r2,r3,r4 

تمام آنها اعداد است.   

جدولی دیگری دارم بنام caladd با فیلد idcaladd,add1,add2,add3,add4 در همان دیتا بیس.حال من میخواهم جمع f1+r1 را در فیلد add1 جدول caladd  ذخیره کنم. هر بار با اضافه شدن جدول t1 و t2 فقط جمع جدید در فیلد add1  باشد.هر سه جدول دارای ایدی میباشد.

نمایش خروجی هر سه جدول در کنترلر ویژوال بیسیک datagrinwview میباشد. فایل ضمیمه نمونه کد میباشدولی برای برنامه دیگر است .جهت راهنمایی .

دستور insert into هم تست شد.جواب منفی است.

پرسیده شده در 1400/01/05 توسط

6 پاسخ

0

vb دیگه زیاد کاربری نیست ، c# بخونید و اینکه برید به سمت برنامه های وب با روش core

پاسخ در 1400/01/07 توسط
0

سلام

 

اول از همه اینکه نمی خواستم ناراحتتون کنم ! اگه این طور شده ببخشید. راستش اینقدر سوالتون 1 و2 و3 داشت به نظر از این تمرین هایی اومد که استادها می دن و دانشجو رو سر کار می زارن.

دو تا نکته اول کار :

1- ببخشید پاسخ بسیار طولانی میشه 

2- میتونیم ادامه این بحث - اگه لازم بود- رو تو همین سوال داشته باشیم و نیاز نیست سوال جدید اضافه کنید.

 

اما نظرات من :

اول : اینکه چرا insert کار نمی کنه ؟ خب دو تا سطر دارید به دو تا جدول اضافه می کنید ، خب مجموعشون رو هم باید بشه محاسبه کرد و به جدول سوم insert کرد دیگه ؟!

 

دوم : اگه هر دو جدول id دارند ، میشه تو sql روی جدوال trigger نوشت که چک کنه اگه یه خط اضافه شد و id متناظر اون هم تو جدول دیگه بود جمعشون کنه و تو جدول سوم بنویسه. اما یه سری دردسر داره :

الف) باید تو هر دو جدول trigger بنویسید و احتمالا این جمع دوبار انجام بشه و دیتابیس بی خودی درگیر بشه.

ب) باید برای update و delete شدن هر سطر هم trigger بنویسید.

 

سوم : اصولا من با داشتن یک جدول برای نگهداری جمع یا تفریق یا ... دو تا جدول دیگه مخالفم ! چون اولا فضای اضافی روی دیتابیس میگیره و دوما دردسرهای هربار محاسبه ومطمئن بودن درستی اون جدول رو دارید. در نظر بگیریرد از هر طریقی که یکی از این دو جدول update بشه باید سطر متناظر در جدول مجموع هم بروز بشه.

 

چهارم : من خیلی آدم بدبینی هستم ! آیا اطمینان دارید که این id ها در دو جدول اولیه همیشه متناظر هستند ؟ مثلا اگه چند تا کاربر همزمان دیتا بزنند، ممکن نیست چیزی به هم بریزه ؟

 

پنجم : بهترین راه از نظر من یا محاسبه در زمان اجرا یا استفاده از view که بتونه خودش جمع بزنه و نتیجه رو بهتون بده نه اینکه جمع رو یه جا ذخیره کنید.

پاسخ در 1400/01/05 توسط
0

خب ایراد که اصولا تو همون یک خط کد sql دارید :

select Bank.b1*2 , Bank.b2*2 into bank  from city

درستش اینه

insert into city 

select 

b1*2 as c1,

b2*2 as c2,

from bank

 

البته کلا نمی فهمم می خواید چی کار کنید ، شما می خواید هر بار کل جدول رو بریزید ؟ 

 

+ یه پیشنهاد دوستانه : با این روش دنبال پیاده کردن برنامه بزرگ نباشید !  خیلی راه دارید. هم تو طراحی دیتابیس هم کد sql هم کد برنامه. 

کلا اگه هم تازه دارید شروع می کنید vb رو استارت نزنید بهتره. 

پاسخ در 1400/01/06 توسط
0

کار نکرد یعنی چی ؟ خب چه خطایی میده ؟ من شبیه این کد رو همین امروز 10 بار نوشتم !

 

"قسمت ورود دیتا از تکسباکسم به جدول " یعنی دقیقا کجا ؟

تصویر کدتون و خطایی که میگیریرد رو بدید، خطاها معمولا کاملا گویا هستند و معلوم میشه چی کمه.

 

 

پاسخ در 1400/01/07 توسط
0

سلام .من خیلی دوست دارم ایراد های منو بگید. نظرلطف شماست .

کد زیر را در ماژول ویژوال بیسیک که درست کار میکنه ببینید.

Imports System.Data
Imports System.Data.SqlClient
Module Module1

   = Public StrCon1 As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename

" & My.Application.Info.DirectoryPath & "\sql\Test.mdf;Integrated Security=True;Connect Timeout=30"


    Public Con1 As SqlConnection = New SqlConnection(StrCon1)

    ""=Public strsql1 As String 

""= Public strsql2 As String
'"=    Public strsql3 As String

    Public Da1 As SqlDataAdapter
    Public Da2 As SqlDataAdapter
    Public Da3 As SqlDataAdapter

    Public Ds1 As New DataSet
    Public Ds2 As New DataSet
    Public Ds3 As New DataSet


    Public Com1 As SqlCommand
    Public Com2 As SqlCommand
    Public Com3 As SqlCommand

End Module

حال کد در لود شدن فرم به صورت زیر است.

Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load           

    ()Ds1.Clear
    ()Ds2.clear
        ()Ds3.Clear
        ()Con1.Open
        "strsql1 = "select * from Bank
        "strsql2 = "select *  from city
        "strsql2 = "select * from ostan

        Da1 = New SqlDataAdapter(strsql1, Con1)
        Da2 = New SqlDataAdapter(strsql2, Con1)
        Da3 = New SqlDataAdapter(strsql3, Con1)

        Da1.Fill(Ds1, "Bank")
        Da2.Fill(Ds2, "city")
        Da3.Fill(Ds3, "ostan")

        ()Con1.Close

        ()DataGridView1.DataBindings.Clear
        DataGridView1.DataSource = Ds1.Tables("bank")

        ()DataGridView2.DataBindings.Clear
        DataGridView2.DataSource = Ds2.Tables("city")

        ()DataGridView3.DataBindings.Clear
        DataGridView3.DataSource = Ds3.Tables("ostan")


    End Sub
End Class

من سه تا جدول بنام بانک وسیتی و استان را در اسکیول سرور درست کردم و سپس بعد از تعریف کانکشن و دیتاست و سایر ملظومات در ویژوال بیسیک دات نت فراخوانی کردم

و درست هم در سه تا کنترل DataGridView به من جدولها را نشان میده

 

من دستورات زیر را به این صورت تعغییر دادم ولی انجام نمیشه

نام فیلهای جدول بانک:RowBank,b1,b2

نام فیلهای جدول سیتی:Rowcity,c1,c2

نام فیلهای جدول استان:Rowostan,o1,o2

کدی بنویس که فیلهای جدول بانک را دو برابر کند یا در جدول خودش به قول شما ذخیره کند یا در جدول سیتی من ذخیره کند

کمک شما در این دستوراته

strsql1 = "select * from Bank
        "strsql2 = "select Bank.b1*2 , Bank.b2*2 into bank  from city
        "strsql2 = "select * from ostan

 

 

ممنون از توجهتان و لطف شما .

 

پاسخ در 1400/01/06 توسط
0

سلام  جدولها فرضی است . بعدا اسامی را مناسب تعغییر میدم 

1- جدول بانک موجودی از قبل انبار  2-جدول سیتی کالای ورود به انبار3-جدول استان کالای خروج انبار

بدست آوردن موجودی در حال حاضر روش زیر است:

مجموع جمع فیلدهای جدول بانک با جمع فیلدهای جدول سیتی منهای جمع فیلدهای جدول استان برابر است با موجودی کالا در انبار .

تا اینجا درست. حال راهنمایی بفرمایید الگوریتم به چه صورت میباشد. این کد هم لطف کردید فرستادید کار نکرد.

strsql3 = "insert into city select b1*2 as c1,b2*2 as c2,from bank"

این کدinsert into را من در قسمت ورود دیتا از تکسباکسم به جدول استفاده کردم

strsqlSave = "INSERT INTO Table_1(con1,con2,con3,con4,unit) VALUES (@con1,@con2,@con3,@con4,@unit)"

ولی من میخواهم از جدول دیگر بخوانم .فرض کنیدکدی دیتا را از یک جدول بگیرد و به فیلدجدول مورد نظرم درج کند .

من ویژوال را در حد متوسط بلدم.ولی sqlserver را 6ماه شروع کردم

کلا اگه هم تازه دارید شروع می کنید vb رو استارت نزنید بهتره.راهنمایی بکنید از کجا شروع کنم

پاسخ در 1400/01/07 توسط

پاسخ شما