الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف ارجع IDentity@@ من الاجراء المخزن بعد الاضافة عن طريق DatatGrid

بدأه أبو عبدالرحمن-2 في 14 أبريل 2010 · 3 رد · 962 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ا السلام عليكم ورحمة الله وبركاته

ا اتمنى ان اجد الجواب على سؤالي التالي وكما هو موضح مختصرا في العنوان

اريد ان ارجع بـ identity بعد الاضافة عن طريق الداتاقريد , انا لدي كود الاجراء المخزن للاضافة ولارجاع الادنتتي ويعمل بشكل جيد لكن الاشكال في ارجاعه في الفيجوال بيسك عن طريق الداتا قريد بعد الاضافة

اتمنى لكم التوفيق

#2

lماذا تعني بال لاشكال في ارجاعه في الفيجوال بيسك عن طريق الداتا قريد بعد الاضافة

كيف ربطت datagrid بال database? هل استحدمت ال Dataset او command object? وهل Dataset Typed or un-typed?

#3

use sqlperocedure


(
@x int
@xx output int
)
as
begin
insert into x
values(@x)
set @xx=@@IDENTITY
end
create procedure x

in dataset


values(@x)
select @@IDENTITY
insert into x

اتمنى ان تكون اجابتي مصيبة

تم تعديل هذه المشاركة بواسطة AsJsGle في 18 أبريل 2010 في 20:38

In bad state

#4

بارك الله فيكم جميعا

اولا ساشرح السيناريو الجدول

الجدول عبارة عن ثلاثة حقول { TNames,SID,NoID}

يتم ادخال حقل Tnames عن طريق الداتاقريد

أم الحقل Sid فياخذ قيمته من حقل ترقيم تلقائي ايضا في جدول راس الفاتورة

اما الحقل NOId فيتم توليده بشكل تلقائي عن طريق Identity يتم ارجاعه بعد الاضافة في الاجراء المخزن المسمى AddTbl1 وهو الخاص بتفاصيل الفاتورة

كود الاجراء المخزن كالتالي

اقتباس

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[AddTbl1]

@TNames nvarchar(50),

@SID int,

@NoID int output

AS

INSERT INTO [Tbl1]

( TNames,SID)

VALUES

( @TNames,@SID)

set @NoID = @@Identity

return

وكود الاضافة عن طريق الفيجوال بيسك هو

اقتباس

Try

Dim xx As Integer

For xx = 0 To DataGridView1.Rows.Count - 2

With DataGridView1.Rows(xx)

Dim intNOID As Integer = .Cells(0).Value

Dim strTnames As String = .Cells(1).Value

Dim intSID As Integer = .Cells(2).Value

Dim COn As New SqlConnection(ConfigurationManager.ConnectionStrings("pp").ConnectionString)

Using Cm As New SqlCommand("AddTbl1", COn)

With Cm

.CommandType = CommandType.StoredProcedure

.Parameters.Add(New SqlParameter("@TNames", strTnames))

.Parameters.Add(New SqlParameter("@SID", intSID))

Dim IDd As Integer

Dim par As New SqlParameter("@NOID", SqlDbType.Int)

par.Direction = ParameterDirection.Output

.Parameters.Add(par)

COn.Open()

Cm.ExecuteNonQuery()

IDd = CInt(.Parameters("@NOID").Value)

???????= IDd

Return

End With

End Using

End With

Next

' FillDatagrid()

Catch ex As Exception

End Try

المطلوب

اولا / ارجاع قيمة identity بعد الاضافة عن طريق الداتا قريد لكل صف يتم اضافته

تم حل اولا عن طريق dataset بالكود التالي

اقتباس

Private Sub FillDatagrid()

Try

Dim finsql As String = "select * from tbl1 where SID= '" & intSID & "'"

ds.Clear()

DataGridView1.Rows.Clear()

ds = ClsMain.INQData(ds, finsql, "tbl1")

For I = 0 To ds.Tables("tbl1").Rows.Count - 1

Dim row As String() = {ds.Tables("tbl1").Rows(I).Item("NoID"), _

ds.Tables("tbl1").Rows(I).Item("TNames"), _

ds.Tables("tbl1").Rows(I).Item("SID")}

DataGridView1.Rows.Add(row)

Next

Catch ex As Exception

End Try

End Sub

هل هذا الحل صحيح حيث يعمل بشكل ممتاز عندما امرر لنص الاستعلام الحقل sid اذا تم ادخاله بشكل يدوي

لكن المشكلة تكمن في ان الحقل sid يأخذ قيمته من textbox1 توليد تلقائي ايضا من جدول اخر راس الفاتورة , ويتم توليده ايضا بنفس طريقة الاجراء السابقة بعد الاضافة

ثم ماذا اضع بدل الاستفهامات عندما يرجع الادنتتدي بقيمة , اذا وضعت التالي يعمل بشكل ممتاز وهو يرجع بصف واحد

اقتباس

IDd = CInt(.Parameters("@NOID").Value)

Idd= me.textbox3.text

مااادري ان شاء الله قدرت اوصل ماهو المطلوب

تم تعديل هذه المشاركة بواسطة أبو عبدالرحمن-2 في 19 أبريل 2010 في 12:28

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…