Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 与多个表的内部联接给出了;FROM子句中的语法错误;_Vb.net_Visual Studio 2012_Ms Access 2013_Oledbdataadapter - Fatal编程技术网

Vb.net 与多个表的内部联接给出了;FROM子句中的语法错误;

Vb.net 与多个表的内部联接给出了;FROM子句中的语法错误;,vb.net,visual-studio-2012,ms-access-2013,oledbdataadapter,Vb.net,Visual Studio 2012,Ms Access 2013,Oledbdataadapter,我正在开发一个VB.NET程序,它需要连接多个表并在DataGridView上显示它们 我写了这个查询: ($dato随每个查询而变化) 当我运行我的程序时,它失败并出现错误:“FROM子句中的语法错误” 我试图在每个内部之前添加一个逗号,但错误仍然存在 注意:我使用的是MS Access数据库,我使用OleDbDataAdapter运行所有查询。 你们能帮我看看这里发生了什么吗/ 我认为问题在于您在初始选择中没有包含me.idMedicamento,因此它无法识别它。查看答案,您似乎需要使

我正在开发一个VB.NET程序,它需要连接多个表并在DataGridView上显示它们

我写了这个查询:

$dato
随每个查询而变化)

当我运行我的程序时,它失败并出现错误:“FROM子句中的语法错误”

我试图在每个
内部
之前添加一个逗号,但错误仍然存在

注意:我使用的是MS Access数据库,我使用OleDbDataAdapter运行所有查询。


你们能帮我看看这里发生了什么吗/

我认为问题在于您在初始选择中没有包含me.idMedicamento,因此它无法识别它。

查看答案,您似乎需要使用括号来保持连接在逻辑上分开。 这是一本关于这个话题的好书

正确完成后,您的查询应如下所示:

Dim Consulta As New OleDb.OleDbDataAdapter("Select m.idMedicos, m.Nombre, m.Apellido, h.idHistorial, h.CedulaP, r.*, rm.*, me.Nombre, me.Tipo, me.Administracion FROM (((Medicos m  INNER JOIN Historial h ON m.idMedicos = h.idMedicos )   INNER JOIN Recetas r ON r.idHistorial = h.idHistorial ) INNER JOIN RecetaMedica rm ON rm.idReceta = r.idReceta )    INNER JOIN Medicamentos me ON me.idMedicamento = rm.idMedicamento WHERE h.CedulaP ='" + dato + "'", conexion)

我已经找到了这个问题的解决方案(事实上,很久以前)

我下载了飞行速度MySQL查询。。。它是一个程序,您可以在其中创建表、关系和其他,最终生成正确的代码。(如有必要,有时您需要进行一些更改)


谢谢你们的帮助。

我觉得你们的第一个问题很好。你能直接在数据库中运行它并在此处添加详细的错误消息吗单击此链接:直接在MySQL中执行查询,而不是在你的程序代码中执行查询。我删除这些逗号的可能重复已经导致了你在select中所说的内容(并添加了更多详细信息),但仍然不起作用。。“选择m.idMedicos,m.Nombre,m.Apellido,h.idMedicos,h.idHistorial,h.CedulaP,r.*,rm.*,me.idMedicamento,me.Nombre,me.Tipo,me.Administration FROM Medicos m Internal JOIN Historial h ON m.idMedicos=h.idMedicos Internal JOIN Recitas r ON r.idHistorial=h.idHistorial Internal JOIN Rectamedica rm ON rm ON rm.IDRecateta=r.IDRecita=r.IDRecateta Internal JOIN Medicamentos m”e ON me.idMedicamento=rm.idMedicamento,其中h.CedulaP='“+dato+””
Dim Consulta As New OleDb.OleDbDataAdapter("Select m.idMedicos, m.Nombre, m.Apellido, 
             h.idHistorial, h.CedulaP, r.*, rm.*, me.Nombre, me.Tipo, me.Administracion 
             FROM Medicos m INNER JOIN Historial h ON m.idMedicos = h.idMedicos, INNER JOIN Recetas r ON r.idHistorial = h.idHistorial, INNER JOIN RecetaMedica rm ON rm.idReceta = r.idReceta,
             INNER JOIN Medicamentos me ON me.idMedicamento = rm.idMedicamento 
             WHERE h.CedulaP ='" + dato + "'", conexion)
Dim Consulta As New OleDb.OleDbDataAdapter("Select m.idMedicos, m.Nombre, m.Apellido, h.idHistorial, h.CedulaP, r.*, rm.*, me.Nombre, me.Tipo, me.Administracion FROM (((Medicos m  INNER JOIN Historial h ON m.idMedicos = h.idMedicos )   INNER JOIN Recetas r ON r.idHistorial = h.idHistorial ) INNER JOIN RecetaMedica rm ON rm.idReceta = r.idReceta )    INNER JOIN Medicamentos me ON me.idMedicamento = rm.idMedicamento WHERE h.CedulaP ='" + dato + "'", conexion)