MS ACCESS 2003 - سؤال حول تمرير المعلومات من نموذج غير منضم إلى تقرير

StackOverflow https://stackoverflow.com/questions/2065214

سؤال

أستخدم شيئًا مثل أدناه لتمرير المعلومات من نموذج غير منضم إلى نموذج آخر (أعذر التحقق من عدم وجود أخطاء):

Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string

docmd.openform "NextFormIamAbouttoUse"

sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"

' usually debug here

set db = currentdb
set rs = db.openrecordset(sql)

if rs.eof then
   msgbox "oops message"
else
     rs.movefirst
          [Forms]![NextFormIamAbouttoUse].as_mainID = rs![MainID]
          [forms]![NextFormIamAbouttoUse].value1 = rs![value1]
          ' etc

     rs.close
     set db = nothing
     set rs = nothing
     sql = ""
 end if

 'error stuff
  end sub

حسنًا، هل يمكنني استخدام هذا النوع من الأشياء لنقل المعلومات من النماذج إلى التقارير أيضًا؟أرى أنني أستخدم الكثير من النماذج المليئة بمربعات النص كلوحات معلومات، حيث لا تخدم مربعات النص أي غرض إدخال، بل تعرض معلومات سريعة بدلاً من ذلك.

يتنقل المستخدم عبر نماذج مختلفة لإنشاء نماذج "تشبه لوحة المعلومات" حسب رغبته ثم يرغب في طباعتها في مرحلة ما.لذلك أردت إنشاء تقارير مشابهة (من حيث البيانات المقدمة) في كل نقطة حتى يتمكنوا من طباعة صفحة المعلومات التي قاموا بإنشائها من خلال هذه النماذج.

لذلك حاولت القيام بذلك باستخدام تقرير:

Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string

docmd.openreport "ReportTester", acViewPreview

sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"

' usually debug here

set db = currentdb
set rs = db.openrecordset(sql)

if rs.eof then
   msgbox "oops message"
else
     rs.movefirst
          [reports]![ReportTester].as_mainID = rs![MainID]
          [reports]![ReportTester].value1 = rs![value1]
          ' etc

     rs.close
     set db = nothing
     set rs = nothing
     sql = ""
 end if

 'error stuff
  end sub

مجرد تخمين، ولم ينجح.لا أخطاء، أو أي شيء.فقط لن يتم عرض أي معلومات بهذه الطريقة.لن يمرر حتى رقم الهوية.

لذلك أعتقد أن فتح التقرير في AcViewPreview يعني أنه لا يمكنني إضافة معلومات إلى مربعات النص هذه بعد حدوثها، لكنني لست متأكدًا.لذا فإن أي نصيحة حول هذا الأمر موضع تقدير كبير.شكرًا!

هل كانت مفيدة؟

المحلول

لديك عدد قليل من الخيارات.يمكنك إما إنشاء استعلام وتمرير قيم عنصر تحكم النموذج إلى القيم هناك، وبالتالي إنشاء استعلام سجل واحد، والذي يمكنك بناء تقريرك عليه.

سيبدو كل عمود كما يلي: بيانات:النماذج![MyForm]![MyControl]

أو يمكنك فقط ربط عناصر التحكم من النموذج مباشرة بعناصر تحكم التقرير.

ستحتاج إلى ترك النموذج مفتوحًا يحتوي على القيم أثناء فتح التقرير، إذا اخترت أيًا من هذه المسارات.لا حاجة إلى رمز معقد.

نصائح أخرى

وأعتقد أنا في عداد المفقودين شيء. لماذا لا لديك فقط مصدر_سجلات التقرير يكون هو نفسه مصدر السجل للنموذج، ومن ثم تصفية في وقت لMainID سيما في الوسيطة wherecondition لDoCmd.OpenReport على ذلك؟ ثم يمكنك تشغيل التقرير دون الحاجة لفتح النموذج.

وإذا لم النموذج غير منضم، أو لديه الحقول التي هي مكلفة لحساب على الطاير، لا أستطيع أن أرى أي ميزة لربط التقرير إلى النموذج على الإطلاق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top